Nic*_*ick 29 javascript jquery events
我有一个已经定义的点击事件.我想知道什么是最好的办法是添加另一个事件处理这个事件,而不触及此代码(如果可能).
有没有办法将另一个事件处理程序附加到已定义的单击事件?
这是当前的点击事件定义:
$(".HwYesButton", "#HwQuizQuestions")
.append("<a href='javascript:void(0);' rel='.HwYesButton'>Yes</a>")
.click(function(event) {
var button = $(this).parent();
var questionId = button.attr('id');
$iadp.decisionPoint["HwQuizYourself"].Input.inputProvided(questionId);
button.find(".HwNoButton").removeClass("HwButtonSelected");
$(this).addClass("HwButtonSelected");
button.removeClass("HwQuestionSkipped");
$iadp.flat.setBoolean(questionId, true);
return false;
});
Run Code Online (Sandbox Code Playgroud)
Fel*_*ing 31
你唯一能做的就是附加另一个(附加)处理程序:
$(".HwYesButton", "#HwQuizQuestions").click(function() {
// something else
});
Run Code Online (Sandbox Code Playgroud)
jQuery将按照它们附加到元素的顺序调用处理程序.
您不能"扩展"已定义的处理程序.
顺便说一句.你的表述有点不精确.您没有定义点击事件.您只附加了单击事件处理程序.当用户单击某个元素时,浏览器会生成click事件.
您可以为一个元素添加任意数量的单击处理程序.也许你习惯于使用纯JavaScript:
element.onclick = function() {}
Run Code Online (Sandbox Code Playgroud)
使用此方法,您确实只能附加一个处理程序.但JavaScript提供了一些高级事件处理方法,我假设jQuery使用它们.
我知道这是一个老帖子,但也许这仍然可以帮助某人,因为我在搜索过程中仍然遇到了这个问题...
我想尝试做同样的事情,除了我希望我的动作在现有的内联onClick事件之前触发.这是我到目前为止所做的,它在我的初步测试后似乎正常工作.它可能不会处理非内联的事件,例如由其他javascipt绑定的事件.
$(function() {
$("[onClick]").each(function(){
var x = $(this).attr("onClick");
$(this).removeAttr("onClick").unbind("click");
$(this).click(function(e){
// do what you want here...
eval(x); // do original action here...
});
});
});
Run Code Online (Sandbox Code Playgroud)
您可以将另一个点击事件写入相同的事件,并且两者都将被触发.在这里看到它
<a id="clickme">clickme</a>
<script>
$('#clickme').click(function () {
alert('first click handler triggered');
});
$('#clickme').click(function () {
alert('second click handler triggered');
});
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48456 次 |
| 最近记录: |