JS:将eventHandler添加到除少数之外的所有元素

时间:2016-01-05 19:35:05

标签: javascript jquery html

  

我正在尝试捕获网页中所有元素的所有click个请求,但明确指定的除外。

例如:

<input type="button" name="some1" />  //Need to Capture Click
<input type="text" name="some2" />    //Need to Capture Click
<input type="text" name="some3" />    //Need to Capture Click
<img src="something.jpg" />           //Need to Capture Click

<input type="text" name="test" />     //Shouldn't Capture

有没有办法枚举网页上的所有元素(不包括指定的元素)并递归添加eventHandler

任何帮助都会很棒。 :)

P.S。我是JS / JQuery的初学者

4 个答案:

答案 0 :(得分:2)

按照“全部捕获,除了一些”之后的需要。将类“nocapture”添加到您不想捕获的元素,并使用脚本:

jQuery('*:not(.nocapture)').on('click', function(e){
    e.stopPropagation();
    console.log('Element clicked', this); 
})

答案 1 :(得分:1)

捕获所需元素点击的一个简单解决方案是向其添加特定类

$('.capture').click(function() {
  console.log('click captured');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="button" name="some1" class="capture" />
<input type="text" name="some2" class="capture" />
<input type="text" name="some3" class="capture" />
<img src="something.jpg" class="capture" />

<input type="text" name="test" />

答案 2 :(得分:1)

这可能有一个更好的答案,但你可以在你想要捕获的输入captureclick中添加一个类

<input type="button" class="captureclick" name="some1" />   

然后使用jquery注册这样的点击:

$('.captureclick').click(function(e){
 //code you want to run here
});

答案 3 :(得分:1)

其他答案提供了更好的替代方案,可以在排除其中一些内容时,在页面上为所有添加侦听器。如果您坚持这样做,只需将HTML类添加到您想要收听的元素中,并在附加事件侦听器时将其排除。

HTML:

<input type="button" name="some1" />  //Need to Capture Click
<input type="text" name="some2" />    //Need to Capture Click
<input type="text" name="some3" />    //Need to Capture Click
<img src="something.jpg" />           //Need to Capture Click

<input class="exclude" type="text" name="test" />     //Shouldn't Capture

JS:

$("*:not(.exclude)").on("click", eventHandler);