选择p标签内的所有元素,输入元素除外

时间:2012-11-17 08:47:49

标签: jquery

我有以下标记:

<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
 });

请评论。

1 个答案:

答案 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()
});