1

シナリオ: ajax 呼び出しを実行して、表示されている画像を更新したいと考えています。例: クリックして有効にし、もう一度クリックして無効にします。

これで、最初のクリック時に画像が正しく変更されるようになりました。

その後、再度画像をクリックしても変更が反映されません。

その理由は、 onclick status still= yes ハイパーリンク要素にアクセスして onclick 部分を onclick="update('7', 'no') at REFER HERE に書き換えるにはどうすればよいですか?

<a href="#" onclick="update('7','yes')" ><img id=img7 border=0 src="img/active.gif" ></a>

<script type="text/javascript">
    function update(pk, enable) {
        $.ajax({
            url: "ajaxcall.asp",
            type: "POST",
            success: function (output) {
                var status = output
                if (status == 1) {
                    var src = ($('#' + 'img' + pk).attr("src") == "img/cross.gif") ? "img/tick.gif" : "img/cross.gif";
                    $('#' + 'img' + pk).attr("src", src);
                    //REFER HERE
                }
            },
            complete: function () { },
            data: 'pk=' + pk + '&enable=' + enable
        });
    }
</script>
4

2 に答える 2

1

簡単な方法:

これを置き換えます:

$('#'+'img'+pk).attr("src", src);    

これとともに:

$('#'+'img'+pk).attr("src", src).parent('a').attr('onClick','update("7","no")').

正しい方法:

このJavascriptは目立たないようにする必要があります。もしそうなら、jQueryのイベントバインディングシステムを使用してイベントを1回実行してから、バインドを解除することができます。

于 2009-07-23T13:11:44.247 に答える
1

私はこのようにします。まず:

<a id="a7" href="#"><img border="0" src="img/active.gif"></a>

それから

$(function() {
  $("#a7").update("7");
});

function update(pk) {
  var img = $("#img" + pk);
  if (img.attr("src") == "img/cross.gif") {
    enable = "no";
    var src = "img/cross.gif";
  } else {
    enable = "yes";
    var src = "img/tick.gif";
  }
  $.ajax({
    url: "ajaxcall.asp",
    type: "POST",                       
    success:  function(output) {
      var status = output;
      if (status == 1) {
        img.attr("src", src);
      }
    },
    complete: function(){ },
    data: 'pk='+pk+'&enable='+enable
  });         
}

はいまたはいいえを渡す必要はありません。あなたはそれを画像srcから導き出すことができます。

于 2009-07-23T13:23:38.943 に答える