我陷入了非常简单的境地 我有一个执行ajax调用的链接,并且在成功时我需要更改单击的链接文本或颜色。
foreach (var m in Model.GroupPosts){
...
@Html.ActionLink("Vote up", "Vote", "GroupPost", new { groupPostId = m.GroupPostId }, new{@class="vote-up"})
@Html.ActionLink("Vote down", "Vote", "GroupPost", new { groupPostId = m.GroupPostId }, new { @class = "vote-down" })
}
$('.vote-up').click(function (e) {
e.preventDefault();
var url = $(this).attr('href');
$.ajax({
url: url,
type: "GET",
success: function (html) {
alert("voted up");
e.target.text("New link text");
}
});
});
我无法更改点击的链接文字。
答案 0 :(得分:2)
应该是:
$(e.target).text("New link text");
此外,您可以在button/Link
来电之外保留对所点击的AJAX
的引用,然后您可以在success
回调中使用它;像这样:
$('.vote-up').click(function (e) {
e.preventDefault();
var url = $(this).attr('href'),
btn = $(this); // <-- reference the Button/Link
$.ajax({
url: url,
type: "GET",
success: function (html) {
alert("voted up");
btn.text("New link text"); // <-- Use that referenced jQuery Object
}
});
});
答案 1 :(得分:0)
纯粹的javascript方式:
e.target.innerHTML = "New link text"
e.target
是一个元素,而不是jQuery对象,因此它没有您尝试使用的text()
方法。您可以使用元素的innerHTML
属性,也可以将元素包装在jQuery中,以便您像WereWolf演示的那样访问text()
。