【问题标题】:Jquery- Modify Element Value after ajax callJquery-在ajax调用后修改元素值
【发布时间】:2009-07-23 13:06:46
【问题描述】:

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

现在,第一次点击时图片可以正确变化了。

之后,如果我再次点击图片,更改将不再反映。

原因,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>

【问题讨论】:

    标签: jquery ajax element


    【解决方案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中派生出来。

    【讨论】:

    • 我还没有想到这种方法。谢谢。
    【解决方案2】:

    简单的出路:

    替换这个:

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

    用这个:

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

    正确的方法:

    这个 Javascript 应该是unobtrusive。如果是,你可以使用 jQuery 的事件绑定系统运行一次事件,然后解除绑定。

    【讨论】:

    • 您好,我发现这种方法只适用于 Firefox,不适用于 IE。有什么解决方法吗?
    • 简单的方法。它在 FF 中运行良好,但 IE 在第一次单击后没有响应。 $('#'+'img'+pk).attr("src", src).parent('a').attr('onClick','update("7","no")')跨度>
    猜你喜欢
    • 2011-10-09
    • 2014-05-09
    • 2020-12-13
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多