Jquery найти не работает - PullRequest
0 голосов
/ 05 апреля 2011

Это HTML-код для моей страницы, который я просто хочу, если нет популярных продуктов, тогда весь div Popular_prd должен скрываться.

<div class="popular_prd">
    <h1 class="views-heading">Popular Products</h1>
    <div class="view view-popular-products view-id-popular_products view-display-id-default boxes-bottom view-dom-id-3">
        <div class="views-admin-links views-hide">
            <ul class="links">
                <li class="0 first">
                    <a href="/admin/build/views/edit/popular_products?destination=node#views-tab-default">Edit</a>
                </li>
                <li class="1">
                    <a href="/admin/build/views/export/popular_products">Export</a>
                </li>
                <li class="2 last">
                    <a href="/admin/build/views/clone/popular_products">Clone</a>
                </li>
            </ul>
        </div>
    </div>
</div>

Я использовал следующий код jquery, чтобы скрыть div.

$('document').ready(function(){
if(!$('.popular_prd').find('.view-content') ) {
        $('.popular_prd').hide();
    }
    else {
    $('.popular_prd').show();
    }
});

Но код не работает, div все еще отображается.

Ответы [ 5 ]

5 голосов
/ 05 апреля 2011
$('.popular_prd').find('.view-content')

Это просто вернет объект jQuery, который никогда не оценивается как false

Вам нужно проверить длину

if(!$('.popular_prd').find('.view-content').length) {
  //no products.
}
4 голосов
/ 05 апреля 2011

find не работает так, как вы думаете.Похоже, вместо

if(!$('.popular_prd').find('.view-content') ) {

вы имеете в виду

if(!$('.popular_prd').find('.view-content').length ) {

На самом деле, вам даже не нужно find здесь ...

if(!$('.popular_prd .view-content').length ) {

В итоге, селекторы jQuery возвращают не true или false, а набор.Проверьте length, чтобы увидеть, было ли что-либо найдено.

2 голосов
/ 05 апреля 2011

Или используйте length свойство

$('document').ready(function(){
if(!$('.popular_prd').find('.view-content').length) {
        $('.popular_prd').hide();
    }
    else {
    $('.popular_prd').show();
    }
});
0 голосов
/ 05 апреля 2011

view-content класс не содержится в div с классом popular_prd в приведенном выше HTML

0 голосов
/ 05 апреля 2011

У вас нет класса просмотра контента в вашем HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...