检查元素中的类

时间:2011-12-09 10:15:03

标签: javascript jquery

如果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');
    }
})

4 个答案:

答案 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)效率更高。仅选择一个。