我有一个文字链接"没有新通知"。以下代码用于使链接无法点击:
if ($.trim($('a#full_notifications_link').text()) == "No New Notifications"){
$('a#full_notifications_link').click(function(){
event.preventDefault();
return false;
});
}
我使用Ajax轮询服务器并更新文本。当文本更新为"查看所有通知"时,我希望链接变为可点击。我使用以下代码,但它无法正常工作。
$(document).ajaxComplete(function(){
if ($.trim($('a#full_notifications_link').text()) == "See All Notifications"){
$('a#full_notifications_link').click(function(){
return true;
});
}
});
我知道这个问题与返回true有关,因为如果我在返回true之前在其中发出警报,则警报会起作用。不幸的是,该链接仍然无法点击。
我也无法更改任何html,因为后端每次都会生成不同的内容。
答案 0 :(得分:1)
添加新的事件处理程序不会删除您已有的事件处理程序,因此仍会阻止默认操作。
使用on()
和off()
代替
if ($.trim($('a#full_notifications_link').text()) == "No New Notifications"){
$('a#full_notifications_link').on(function(event){
event.preventDefault();
});
}
$(document).ajaxComplete(function(){
if ($.trim($('a#full_notifications_link').text()) == "See All Notifications"){
$('a#full_notifications_link').off('click');
}
});
检查事件处理程序中的文本似乎更容易
$('a#full_notifications_link').on('click', function(e) {
if ( $.trim($(this).text()) == "No New Notifications"){
e.preventDefault();
}
});
答案 1 :(得分:0)
您可以将逻辑移到点击处理程序中吗?
$('a#full_notifications_link').click(function(evt){
if($(this).text() == "No New Notifications") {
evt.preventDefault();
}
});