我有以下标记:
<div style="height:100px; width:280px; float:left" >
<p style="float:left; padding:5px;" id="optionOne">
<label style="cursor:pointer; width:100px" id="optionLabelOne">Option 1</label>
<span style="color:red; font-size:10px"></span>
<input class="u-3" name="ageGroup" id="ageGroup" style="width:230px;" />
</p>
</div>
我有几个这样的重复div。我在其中选择
标签,如下所示:
$('#optionOne,#optionTwo,#optionThree,#optionFour').on('mouseover',function(){
$(this).on('mouseover',function(){
//do something here});
});
现在稍后我需要在“p”标签上执行点击事件,不包括位于其中的“输入”标签。
当我使用下面的代码时,单击事件也会在输入字段上触发(显而易见)
$(this).on('click',function(){
//do something
});
那么可以做些什么来选择完整的p标签而不做任何事情来输入元素。
我也尝试了这个:
$(this).not('input').on('click',function(){
//// NOT WORKING
});
请评论。
答案 0 :(得分:3)
您可以使用stopPropagation
对象的event
方法:
$('p input').on('click', function(event){
event.stopPropagation()
})
请注意,当您选择了所有元素时,无需将处理程序绑定到this
对象:
$('#optionOne,#optionTwo,#optionThree,#optionFour').on('mouseover',function(){
//
});
您还可以向p
标记添加一个类,并使用类选择器:
$('p.options').on('mouseover',function(){
// $(this).foo()
});