从双选择器中排除类的麻烦

时间:2012-10-19 16:26:42

标签: javascript jquery jquery-selectors

我正在尝试从jquery函数中排除一个类,但我似乎无法让它正常工作。我试过.not(),但似乎没有正常工作。

这是我的基本结构......

<div id='spotList' class='clickableSpot id_117 '>
    <div id='leftCheckboxBar'>
        <form id='checkboxForm' name='checkboxForm'>
            <input type='checkbox' class='spotCheck' unchecked id='117'/>
        </form>
    </div><!--end leftcheckboxbar-->

    <div id='leftCredits'>
        <ul class='credits'>
            <li id='agencyItem'>Agency: <span class='creditText searchAgency'>Y&R</span></li>
        </ul>
    </div><!--end leftcredits-->
</div><!--END SPOT LIST-->

现在我有一个jQuery函数,您可以直接点击.spotList复选框或.spotList div。它看起来像这样,并且它正常工作......

$('.spotCheck, .clickableSpot').click(function(){ 
   /*do stuff*/
});

我不希望跨度.creditText包含在该选择器中。我似乎无法弄明白。我必须有一种方法可以排除点击该范围并触发该功能。但我需要div中的其他所有东西都是可点击的,而不是跨越那段文本。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

您可以使用target对象的event属性:

$('.spotCheck, .clickableSpot').click(function(event){ 
   if (!$(event.target).hasClass('creditText')) {
     // do something here
   }
});

您还可以使用stopPropagation方法:

$('.creditText').click(function(event){
    event.stopPropagation()
})

http://jsfiddle.net/4rBaM/