ein*_*ein 6 javascript event-handling javascript-events
我正在尝试向所有对象添加事件监听器,除了一些选定的(所选的也有任意级别的任意子元素)?
我之前问过这个问题,但我没有得到答案.我已接近解决它.你可以帮我调试一下吗?
我正在向被调用的body元素添加一个事件监听器,bodylistener并为所调用的几个元素添加一个事件监听器selectedElementsMarkTrue.我不想执行一些代码的几个选择的元素,听众selectedElementsMarkTrue进行pior到bodylistener有setTimeout function.selectedElementsMarkTrue设置变量selectedElements来true并bodylistener检查是否selectedElements是true之前执行索姆代码.我的代码还有问题
var selectedElements = false;
var bodylistener = function(){
window.setTimeout(function(){//Setting timeout so that the other handler, selectedElementsMarkTrue, always performs first
(function(){
if(selectedElements == false){
//Do some stuff
}else{
selectedElements = false;
}
});
}, 10);//Could be 0, but te be sure I set 10
};
var selectedElementsMarkTrue = function(){
selectedElements = true;
};
$('#dontAddEventListener1, #dontAddEventListener2').each(function(){
this.addEventListener('click', selectedElementsMarkTrue, false);
});
document.body.addEventListener('click', bodylistener, false);
Run Code Online (Sandbox Code Playgroud)
我无法获取setTimeout函数来执行底层代码?
听起来你想要这样的行为:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
window.addEventListener("DOMContentLoaded", function() {
document.body.addEventListener("click", function(e) {
var el = e.target;
do {
if (el.hasAttribute && el.hasAttribute("data-nofire")) {
return;
}
} while (el = el.parentNode);
alert('do stuff');
}, true);
}, false);
</script>
</head>
<body>
<p><span>click me</span></p>
<p data-nofire><span>click me</span></p>
<p data-nofire>click me</p>
<p>click me</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
或者,你可以像纳伦建议的那样做:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
window.addEventListener("DOMContentLoaded", function() {
var nofire = document.getElementsByClassName("nofire");
for (var i = 0; i < nofire.length; ++i) {
nofire[i].addEventListener("click", function(e) {
e.stopPropagation();
}, true);
}
document.body.addEventListener("click", function(e) {
alert('do stuff');
}, false);
}, false);
</script>
</head>
<body>
<p><span>click me</span></p>
<p class="nofire"><span>click me</span></p>
<p class="nofire">click me</p>
<p>click me</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5611 次 |
| 最近记录: |