如何在click事件中更改jquery函数的链接文本

时间:2014-06-08 16:26:40

标签: jquery ajax asp.net-mvc asp.net-mvc-4

我陷入了非常简单的境地 我有一个执行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");
                }
            });
        });

我无法更改点击的链接文字。

2 个答案:

答案 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()