如果myclass
元素中有一个包含#main
类的元素,我想提醒ok
但在我的示例中它始终显示no
,如何修复此?
演示: http://jsfiddle.net/mF2K6/1/
<form>
<div id="main">
<div class="myclass"></div>
</div>
<button>Click Me</button>
</form>
$('button').live('click', function (e) {
e.preventDefault();
//var copy_html = $('#main').clone();
//if ($('#main').hasClass('myclass')) {
if ($('#main').is('.myclass')) {
alert('ok');
} else {
alert('no');
}
})
答案 0 :(得分:2)
要检查myclass
的子元素,请使用:
if ($('#main').find('.myclass').length != 0)
或者这个:
if ($('#main .myclass').length != 0)
答案 1 :(得分:1)
您的<div id="main">
没有myclass
课程,只有其中一个孩子有课程。
您可以使用以下代码检查后者:
if ($("#main .myclass").length > 0) {
alert('ok');
} else {
alert('no');
}
答案 2 :(得分:0)
这样的事情应该会有所帮助:
$("button").click(function () {
window.alert(isClassPresent() ? "Yes" : "No");
});
function isClassPresent() {
return $("#main .myclass").length > 0;
}
答案 3 :(得分:0)
这样可以正常工作:jsfiddle
var main=$("#main");
$("button").click(function(){
if(!!main.find(".myclass").length){
alert("ok");
}else{
alert("no");
};
});
[0] is
方法无法比较不同的doms!
[1]为什么必须使用live
?
[2] cache main
(jQuery Object)效率更高。仅选择一个。