0

刚刚尝试了以下方法,发现这不起作用?

(使用 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没有被触发。所以我假设我的方法由于一些基本的误解而不起作用,可能吗?

谁能告诉我这个假设是正确的并给出任何暗示为什么?

4

3 回答 3

5

我不能立即告诉你为什么它不起作用(可能是几件事;onClick一件事应该是小写的——混合大小写的版本只在 HTML标记中是可以的[不是 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;
              });
          }
    });
于 2012-05-20T21:24:16.210 回答
2
"bookmark_remove("+bookmark_id+"), return false;"

逗号是错误的。它应该是一个分号。

于 2012-05-20T21:24:40.300 回答
1

由于您使用的是 jQuery,而不是:

$('.a_bookmark').attr("onClick","bookmark_remove("+bookmark_id+"), return false;");

我建议你使用这种形式:

$('.a_bookmark').click(function(){
    bookmark_remove(bookmark_id);
    return false;
})

使用更少的引号标记更具可读性,对吗?

于 2012-05-20T21:25:09.150 回答