我如何通过jquery和ajax替换图像(在div内)

时间:2010-04-20 14:54:45

标签: jquery asp.net-mvc ajax image

我试图点击图片并通过jquery将其更改为另一张图片。

当我单步执行以下代码时,在服务器端,控制器操作会触发,在客户端,我可以在firebug观察窗口中看到正确的html返回,但图像根本没有变化。知道为什么这个div没有更新?

原始div:

<div class="inlineDiv" toggle="off" id="22"><img src="../../images/vote-favorite-off1.png" border="0"></div>

jquery代码:

    $(document).ready(function() {
        $('div.inlineDiv').live('click', function() {

        var id = $(this).attr("id");
        var toggle = $(this).attr("toggle");

        var url = '/Tracker/Update?id=' + id + '&toggle=' + toggle;

        $.get(url, function(data) {
            $(this).html(data);
        });
    });
}); 

控制器操作:

  public ActionResult Update(int id, string toggle)
  {
       if (toggle == "off")
        {
            return Content("<img src='../../images/vote-favorite-on1.png' border=0'>");
        }
        return Content("<img src='../../images/vote-favorite-off1.png' border=0'>");
  }

2 个答案:

答案 0 :(得分:4)

我相信get中的this指的是get函数。

更容易:

$(this).load(URL);

答案 1 :(得分:0)

此时

$(this)并未指代正确的对象。尝试首先将对象分配给变量,或者只说$('div.inlineDiv').html(data)

var objDiv=$(this);
    $.get(url, function(data) {
        objDiv.html(data);
    });

另一种方法是$('div.inlineDiv img').attr('src',returnedPath); 但是你必须更新控制器动作才能返回src路径。

或如下所述$('div.inlineDiv').load(URL);

相关问题