我正在尝试捕获网页中所有元素的所有
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的初学者
答案 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);