刚尝试了以下方法,发现这不起作用?
(使用jQuery):
function bookmark_add() {
$.ajax({
type: "POST",
url: "load.php",
data: data,
success: function(msg) {
var msg_array=msg.split("-");
var success=msg_array[0];
var bookmark_id=msg_array[1];
if(success==1) {
$('.btn_bookmark').html('Remove Bookmark');
$('.a_bookmark').attr("onClick","bookmark_remove("+bookmark_id+"), return false;");
}
}
});
}
此功能正常。 <a>
元素的属性正在正确更改。但是,新事件(函数bookmark_remove
没有被触发。所以我认为我的方法因为一些基本的误解而无法正常工作?
有人能告诉我这个假设是正确的并给出任何提示吗?
答案 0 :(得分:5)
我无法立即告诉你为什么它不起作用(可能是几件事; onClick
应该是小写的一件事 - 混合大小写的版本只适用于HTML 标记< / em> [不是XHTML,而是HTML],不是一旦你与DOM进行交互,这是区分大小写的),但没有理由这样做。代替:
$('.a_bookmark').click(function() {
bookmark_remove(bookmark_id);
return false;
});
如果锚预先配备了现有的onclick
处理程序,您可以像这样清除它:
$('.a_bookmark').attr("onclick", "");
所以把它放在一起:
$('.a_bookmark').attr("onclick", "").click(function() {
bookmark_remove(bookmark_id);
return false;
});
显然人们不明白我在做什么,所以这是你的完整ajax
电话,并且上面推荐的更改是:
$.ajax({
type: "POST",
url: "load.php",
data: data,
success: function(msg) {
var msg_array=msg.split("-");
var success=msg_array[0];
var bookmark_id=msg_array[1];
if(success==1) {
$('.btn_bookmark').html('Remove Bookmark');
$('.a_bookmark').attr("onclick", "").click(function() {
bookmark_remove(bookmark_id);
return false;
});
}
});
答案 1 :(得分:2)
"bookmark_remove("+bookmark_id+"), return false;"
逗号错了。它应该是一个分号。
答案 2 :(得分:1)
由于您使用的是jQuery,而不是:
$('.a_bookmark').attr("onClick","bookmark_remove("+bookmark_id+"), return false;");
我建议你使用这个表格:
$('.a_bookmark').click(function(){
bookmark_remove(bookmark_id);
return false;
})
使用较少的引号令牌更具可读性,对吧?