我可以使用jQuery将多个单击事件附加到元素吗?
我在插件脚本中包含以下内容:我可以使用jQuery将多个单击事件附加到元素吗?,jquery,Jquery,我在插件脚本中包含以下内容: $("#menu") .on('click','a[href^="/Test"]',function(event){ event.preventDefault(); var href = $(this).attr('href'); alert(this); // Load content $('#content').load(href, '', function (responseT
$("#menu")
.on('click','a[href^="/Test"]',function(event){
event.preventDefault();
var href = $(this).attr('href');
alert(this);
// Load content
$('#content').load(href, '', function (responseText, textStatus, XMLHttpRequest) {
$(this).applyTemplateSetup().buildTableOfContent();
});
window.location.hash = '#' + href;
// Get nav link
var a = $('#menu a[href="' + href + '"]');
if (a.length > 0) {
// Mark as current
$('#menu a').removeClass('current');
a.addClass('current');
// Update breadcrumb
var breadcrumb = $('#breadcrumb').empty();
while (a.length > 0) {
if (a.get(0).nodeName.toUpperCase() == 'A') {
var target = a;
}
else {
var target = a.parent().find('a:first');
}
breadcrumb.prepend('<li><a href="' + target.attr('href') + '">' +
a.contents().filter(function () {
return this.nodeType == 3;
}).first().text()
+ '</a></li>');
// Check if opened
var li = a.parent();
if (li.hasClass('closed')) {
li.removeClass('closed');
}
a = li.parent().parent().children('a, span');
}
}
});
是的,应该有用。确保定义第二个处理程序的代码实际正在执行 或者,您可以始终修改附加的第一个处理程序以调用(多个)其他函数 就个人而言,我更愿意让前者工作,因为它允许您独立地附加/分离处理程序 如果使用,您是否有相同的问题
如Q上的注释所述,如果任何函数返回一个
false
,它将防止事件冒泡。只需将其保留在一键事件中,将其分为两个是冗余的第一个函数的其余部分是相关的,特别是如果它是返回false
…我添加了函数的其余部分。没有返回错误。我想知道有两个事件是否可以;为什么需要2次点击事件?它与您附加到它们的元素相同,所以只需将您的代码组合在一起,使其成为一个event@Tom我以前曾使用过多次单击事件,例如,在构建复杂表单时,可能存在或不存在某些元素。每个依赖于单击的元素都可以根据需要注册/取消注册自己的处理程序-更易于维护,更感谢大家迄今为止的帮助。现在每个人都告诉我它应该可以正常工作了,我会试着调查到底出了什么问题。
$("#menu")
.on('click', 'a[href^="/Test"]', function (event) {
event.preventDefault();
var href = $(this).attr('href');
var pk = href.substr(7, 4);
var rk = href.substr(12, 4);
var link = "/Admin/Testss/Edit?pk=" + pk + "&rk=" + rk;
$('#editLink').data('href', link);
});