1

场景:我想做一个 ajax 调用来更新显示的图像。示例:单击激活,再次单击取消激活。

现在,第一次单击时图像可以正确更改。

之后,如果我再次单击 img,更改将不再反映。

原因,onclick 状态仍然= yes 如何访问超链接元素以在 REFER HERE 处将 onclick 部分重写为 onclick="update('7', 'no')?

<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 的事件绑定系统运行一次事件,然后解除绑定。

于 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 回答