检查div是否具有jQuery具有特定属性的子级

时间:2011-02-21 15:57:32

标签: jquery jquery-selectors attributes

我正在尝试查找语法,以确定div是否包含将data-role属性设置为header的子div。我试过这些东西没有运气:

$('div[data-role*="page"]').each(function(i) {
    if($(this).children('div').attr('data-role')=='header';) {
        alert("has header");
    }
});

$('div[data-role*="page"]').each(function(i) {
    if($(this).children('div[data-role*="header"]').length!=0;) {
        alert("has header");
    }
});

4 个答案:

答案 0 :(得分:16)

在此示例中,您在;

之后有一个尾随!=0;
$('div[data-role*="page"]').each(function(i) {
    if ($(this).children('div[data-role="header"]').length != 0) {
        alert("has header");
    }
});

jsfiddle上的示例。

答案 1 :(得分:6)

尝试:

if ($('div[data-role*="page"]').has("div[data-role=header]").size() > 0)
    alert("Has header");

参考: http://api.jquery.com/has/

答案 2 :(得分:5)

如果我正确阅读,那么以下内容应该有效:

$('div[data-role=page]:has(div[data-role])').css('border','1px solid #ccc');

选择包含具有'data-role'属性的子div的任何div。

JS Fiddle

虽然您似乎想要使用if来触发alert(),但此似乎是不必要的,因为上述内容将充当选择器。如果该选择器没有匹配任何元素,那么在我演示的用例中,不会影响任何元素。另一方面,如果选择了一个元素,或者选择了多个元素,那么这些元素就是。

答案 3 :(得分:4)

这将选择那些作为子元素的子元素(数据角色属性设置为标题)的div。

$('div > div[data-role=header]')