我目前正在使用jQuery使div可点击,在这个div中我也有锚点.我遇到的问题是,当我点击一个锚点时,两个点击事件都会被触发(对于div和锚点).如何在单击锚点时阻止div的onclick事件触发?
这是破碎的代码:
JavaScript的
var url = $("#clickable a").attr("href");
$("#clickable").click(function() {
window.location = url;
return true;
})
Run Code Online (Sandbox Code Playgroud)
HTML
<div id="clickable">
<!-- Other content. -->
<a href="http://foo.com">I don't want #clickable to handle this click event.</a>
</div>
Run Code Online (Sandbox Code Playgroud) 假设我有一个Web应用程序,其中有一个页面可能包含4个脚本块 - 我写的脚本可以在其中一个块中找到,但我不知道哪个是由控制器处理的.
我将一些onclick事件绑定到一个按钮,但我发现它们有时按照我没想到的顺序执行.
有没有办法确保订单,或者你过去如何处理这个问题?
现在,我有一个事件监听器,可以监听屏幕上的点击.屏幕上还有一个按钮.当我点击按钮时,事件监听器将在onclick之前执行.有没有办法让onclick有更高的优先级?
<script>
document.body.addEventListener('click',function(){alert('1');}, false);
function clicked() {
alert('2');
}
</script>
<button onclick="clicked()">Click this</button>
Run Code Online (Sandbox Code Playgroud)
单击该按钮也会触发事件处理程序.1显示在2之前,当我点击按钮时.我想要先显示2.
我正在尝试制作一个chrome扩展,修改Facebook聊天窗口的活动文本区域中的文本.但是我希望只有当用户按下回车键才能进行更改,这样当文本仍然在textarea中时文本不会改变.我希望它使用javascript发生,并让它感觉它发生在后台,虽然我希望它keydown在enter键的事件上被触发.
现在Facebook聊天窗口的textarea的相关JavaScript是:
<textarea class="blah"
onkeydown="window.Bootloader && Bootloader.loadComponents(["control-textarea"],
function() { TextAreaControl.getInstance(this) }.bind(this)); ">
</textarea>
Run Code Online (Sandbox Code Playgroud)
在我的扩展程序的JavaScript文件中.我keydown用这样的东西绑定事件:
//elem is bound to the focussed textarea object
elem.onkeydown = function(evt) {
if(evt.keyCode == 13){
//Some javascript code I want to execute here...
}
};
Run Code Online (Sandbox Code Playgroud)
我认为一旦用户按下该enter键,就会清除textarea并发出某种发布请求.所以我失去了我想用JavaScript修改的文本的范围.我通过按shift+ 检查了输入键绑定是否适用于我的扩展enter,并且它修改了文本没有问题.所以我的脚本运行正常.
但是我希望在清除textarea并发出post请求之前执行我的脚本.我只是不希望用户看到文本被修改.
我可以添加/修改Facebook使用的textarea的键绑定,如上面的google chrome扩展脚本中所示?非常感谢任何帮助.