jquery 版本为 1.11.1。
写了一个举报功能,在文章页会产生类似下面的这样的多个标签,当参数不一样时意义也不一样。
比如举报文章是:
<a href="javascript:impeach(123,0);" class="small pull-right impeach">举报</a>
举报评论时为:
<a href="javascript:impeach(123,54);" class="small pull-right impeach">举报</a>
其中impeach(x,y)是写在.js中的一个方法,第一个参数为文章内容id,第二个参数为评论id.
当评论id为0时为举报文章内容,评论id不为0时为举报评论内容。
impeach方法中的内容大概如下:
function impeach(contentid, commentid) { layer.confirm('您确定要举报?恶意举报也是会受到惩罚的哦!', function (index) { $.ajax({ url: "/a/impeach", type: "post", dataType: "json", data: { "contentid": contentid ,"commentid":commentid}, success: function (data) { if ($.parseJSON(data).status != "-1" && $.parseJSON(data).status != "0") { layer.msg($.parseJSON(data).msg, 1, 1);
//todo:想将当前点击的按钮上的文字“举报”修改为“已举报”
//但是这里的$(this)并不是点击的按钮。在这个地方应该怎么得到当前点击的按钮。 } else { layer.msg($.parseJSON(data).msg, 1, 3); } }, error: function () { layer.msg("请登录后再操作!", 2, function () { window.location = "http://passport.postcha.com"; }); } }); }, "提示信息"); }
但是试了一下,当前a标签并不能用$(this)来操作。
是想获取点击的A标签么?
是的话可以这样:
<a href="#" onclick="Del(this)">aaaaa</a> <a href="#" onclick="Del(this)">bbbbb</a> <a href="#" onclick="Del(this)">ccccc</a>
function Del(target){ alert($(target).text()); }
好多博客都说了this的问题,这里没看出你是想怎么用,但是用的时候要慎重,不能确认的时候还是不要用this比较好,也可以参照下那些博客
我把要处理的地方加了下红。就是将“举报”按钮上的文字变为“已举报”
@abc54288: 这个地方this应该是指的window,具体的话随便找一篇说this作用域的应该都会有讲
这是由于JS是Function作用域,也就是说success: function (data) {}里面的作用域改变了,比较简单的办法就是在$.ajax前面的代码中保存this变量,$this=$(this),然后下面就可以用了,高级的用法就是用apply,call或者JQ的Proxy来实现改变函数的作用域。
this 代表你当前 function的作用域
还有就是 你应该吧红字部分的代码贴出来
不然谁都不知道你什么意思
$.ajax里的this就是另外的了,你可以添加一个参数,把this传进去,然后在里面用
javascript:impeach(123,54,this) //调用
function impeach(contentid, commentid,_this) { layer.confirm('您确定要举报?恶意举报也是会受到惩罚的哦!', function (index) { $.ajax({ url: "/a/impeach", type: "post", dataType: "json", data: { "contentid": contentid ,"commentid":commentid}, success: function (data) { if ($.parseJSON(data).status != "-1" && $.parseJSON(data).status != "0") { layer.msg($.parseJSON(data).msg, 1, 1); //todo:想将当前点击的按钮上的文字“举报”修改为“已举报” //在这里你就可以用$(_this) 了,记得前面的调用要传this阿喂。 } else { layer.msg($.parseJSON(data).msg, 1, 3); } }, error: function () { layer.msg("请登录后再操作!", 2, function () { window.location = "http://passport.postcha.com"; }); } }); }, "提示信息"); }
。