我在插件脚本中有以下内容:
$("#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');
}
}
});
我还想在用户点击时设置链接的值。我加了这个 在我的页面上,但它似乎没有被调用。有什么问题吗? 我将两个相同类型的事件附加到一个元素上?
$("#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);
});
答案 0 :(得分:1)
是的,它应该有效。确保定义第二个处理程序的代码实际上正在执行。
或者,您可以随时修改附加的第一个处理程序以调用(多个)其他函数。
我个人更喜欢让前者工作,因为它允许你独立地附加/分离处理程序。
如果您使用Bind?
,是否会遇到同样的问题?正如对Q的评论中所提到的,如果任何函数返回false
,它将阻止事件冒泡。
答案 1 :(得分:0)
只需将其保留在单击事件中,将其置于一个是多余的