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。1つはすべて小文字にする必要があります。大文字と小文字が混在するバージョンは、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 に答える