2011-03-31 65 views
0

我在jQuery上很新,想变得更好。我试图想出这个代码片段:jQuery .has()目标不同元素

$(document).ready(function(){ 
    $("ul#result-list").has("div#boom")(
     function() { 
     $("div.page-navigation").css("display", "none")); 
    }); 
}); 

我试图让div.page导航消失,如果UL#结果列表具有DIV#热潮。尽管搜索整个网络,但迄今还没有运气。我远吗?感谢您的HEL

+0

你有没有html标记? – Neal 2011-03-31 19:48:29

回答

3

.has()返回匹配的dom元素,而不是true或false布尔值。相反,请检查length属性以确定#result-list中是否存在div#boom

事情是这样的:

$(document).ready(function() { 
    if ($("ul#result-list").has("div#boom").length) { 
    $("div.page-navigation").hide(); 
    } 
}); 
+0

这个伎俩!谢谢你们的及时答复。过去3个小时我一直在想这个 – Julesfrog 2011-03-31 20:00:40

1

尝试这样:

$(document).ready(function() { 
    if($('ul#result-list:has(div#boom)').length > 0) { 
     $('div.page-navigation').hide(); 
    } 
} 

如果有,有一个繁荣的div元素至少一个结果列表项这将隐藏页面导航div中。

0

唯一的问题,我所看到的,说真的,你没有链接方法:

$(document).ready(function(){ 
    $("ul#result-list").has("div#boom")(
     function() { 
     $("div.page-navigation").css("display", "none")); 
    }); 
}); 

这意味着.has()后,你打开一个没有附加到方法的括号。我建议你应该尝试使用if声明,而不是尝试链接,在这种情况下。我会张贴我的想法,但@DNR,和@Alex,先到那里。