Как определить, существует ли конкретный ребенок (.haschild (‘# test ‘)) с jQuery?

$('target').haschild('#test') должен быть true

$('target').haschild('#test[att="test"]') должен быть true

$('target').haschild('#no') должен быть false

Доступно только $('target') .

Вы можете протестировать несколько способов, вот один из них:

 if($("#target > #test").length){ //true } else { //false } 

Если вы играете с плагинами jQuery, вы можете использовать синтаксис, который вы используете в вашем примере:

 $.fn.haschild = function(selector){ return ($("> " + selector, this).length > 0); } $(function(){ alert($('#target').haschild('#test')); // Alerts true alert($('#target').haschild('#test[att="test"]')); // Alerts true alert($('#target').haschild('#no')); // Alerts false }); 

Вот рабочий пример

 $('target').children('#test').length == 0 

или же

 $('target > #test').length == 0 

Изменив пример, найденный здесь в соответствии с этим примером, вы можете расширить JQuery, чтобы иметь новый: селектор haschild, а также метод,

Вы можете использовать $('#target:haschild(#test)') а также .haschild('#test')

 $.fn.haschild = function(selector){ function filterMethod(){ if (selector) { return $(this).children(selector).length >= 1; } return $(this).children().length >= 1; } return this.filter(filterMethod); } $.expr[':'].haschild = function(objNode,intStackIndex,arrProperties,arrNodeStack){ var selector = arrProperties[3]; if (selector) { return $(objNode).children(selector).length >= 1; } return $(objNode).children().length >= 1; }