Ответ 1
В этом примере у вас есть trailing ;
после !=0;
$('div[data-role*="page"]').each(function(i) {
if ($(this).children('div[data-role="header"]').length != 0) {
alert("has header");
}
});
Пример jsfiddle.
Я пытаюсь найти синтаксис, чтобы определить, имеет ли div дочерний div, содержащий атрибут data-role
, установленный в header
. Я пробовал эти вещи без везения:
$('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");
}
});
В этом примере у вас есть trailing ;
после !=0;
$('div[data-role*="page"]').each(function(i) {
if ($(this).children('div[data-role="header"]').length != 0) {
alert("has header");
}
});
Пример jsfiddle.
Try:
if ($('div[data-role*="page"]').has("div[data-role=header]").size() > 0)
alert("Has header");
Ссылка: http://api.jquery.com/has/
Если я правильно прочитал это, то должно работать следующее:
$('div[data-role=page]:has(div[data-role])').css('border','1px solid #ccc');
чтобы выбрать любой div, содержащий дочерний div с атрибутом 'data-role'.
Пока вы, похоже, хотите использовать if
для запуска alert()
, это кажется ненужным, так как выше будет функционировать как селектор. Если никакие элементы не соответствуют этому селектору, тогда в прецеденте, который я демонстрирую, никакие элементы не будут затронуты. С другой стороны, если выбран элемент или несколько элементов, то они будут.
Здесь будут выбраны те divs, которые являются дочерними элементами (с атрибутами роли данных, заданными для заголовка), которые являются дочерними элементами div.
$('div > div[data-role=header]')