<div id="target">
<div id="test" att="test"></div>
</div>
$('target').haschild('#test')
应为true
$('target').haschild('#test[att="test"]')
应为true
$('target').haschild('#no')
应为false
只有$('target')
可用。
答案 0 :(得分:7)
$('target').children('#test').length == 0
或
$('target > #test').length == 0
答案 1 :(得分:5)
你可以测试几种方法,这里有一种方法:
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
});
答案 2 :(得分:0)
修改一个示例here以适应此示例,您可以扩展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;
}