jQuery возвращает true или false, если div содержит тег <p> - PullRequest
6 голосов
/ 08 июня 2009

Посмотрим:

<div><p>this div contains a p tag</p></div>
<div>this one is not</div>

Как назначить переменную с логическим значением (true или false), если div содержит определенный тег, такой как p в приведенном выше примере?

Ответы [ 5 ]

17 голосов
/ 08 июня 2009
$("div:has(p)").addClass("has-paragraph");

добавит класс ко всем элементам div, содержащим p потомков. Если абзацы не являются прямыми дочерними элементами, это не поднимет их.

Примечание: делает это:

$("div p").addClass("has-paragraph");

добавит класс в абзац , а не в div. Это можно исправить, выполнив это:

$("div p").parents("div").addClass("has-paragraph");

но это поймает нескольких предков. Вы можете сделать это:

$("div p").parents("div:first").addClass("has-paragraph");

чтобы исправить это.

Или более программно:

$("div").each(function() {
  if ($(this).find("p").length > 0) {
    // do stuff
  }
});
5 голосов
/ 08 июня 2009

Дайте вашему DIV ID, затем:

if($('#myDiv p').length) {
    alert('I have a paragraph');
}
2 голосов
/ 08 июня 2009
var result = ($('div p').size() > 0);

или

var result = ($('div p').length > 0);

Это захватит любой p внутри любого div. Это в основном то, что @ karim79 имеет.

1 голос
/ 08 июня 2009

Это будет моя ставка:

$("div").each(function(){
    if ($(this).children('p').length>0){
        // do stuff, assign boolean if you want
    }
});

Я предполагал, что вы ищете прямых детей. Если нет, используйте

if ($(':has(p)',this).length>0) ...
0 голосов
/ 08 июня 2009

Не уверен, как вы хотите хранить вашу информацию, но следующий код соберет все теги div, которые содержат тег p.

$("div:has(p)").each( function () {
    # Store what you need here
});

Если у вас есть определенный div, который вы хотите проверить, следующее должно работать на основе «истинного» значения. Я уверен, что кто-то может получить вам точно истинное или ложное значение с помощью некоторых умных средств.

if ( $("#divId:has(p)") ) {
    # Do what you need here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...