在JSON / AJAX调用之后,如何在页面中选择特定按钮(多个按钮之外)?

时间:2014-05-21 23:11:20

标签: javascript php jquery ajax json

很抱歉,如果问题不明确。

基本上我有一个投票系统。我希望用户点击的按钮在请求完成后更改其类值。在request.done(function(){CHANGE BUTTON'S CLASS VALUE})内。

到目前为止,我只能更改所有按钮的属性,而不仅仅是用户点击的按钮。

以下是我现在的代码:

使用Javascript:

$(function() {
    $("body").on("click", ".vote", function (event) {
        var request = $.ajax({
            url: $(this).attr("href"),
            dataType: 'json'
        });

        event.preventDefault();

        //My problem START
        request.done(function (data) {
            $('.vote button').attr('class', 'btn btn-primary btn-sm');
        });
        //My problem END

        request.fail(function (data) {
            alert("Voting failed!");
        });
    });
});

PHP:

<a class="vote" href="<?php base_url(); ?>vote/like/<?php echo $row['id']; ?>">
    <button type="button" class="btn btn-default btn-sm">
        <span style="font-size: 3em" class="glyphicon glyphicon-thumbs-up"></span>
    </button>
</a>

2 个答案:

答案 0 :(得分:3)

$(this)$('.vote')承诺中没有对done()个实例的引用。缓存事件处理程序顶部的引用:

$(function() {
    $("body").on("click", ".vote", function (event) {
        var $this = $(this);

        // ...

        request.done(function (data) {
            $this.children('button').attr('class', 'btn btn-primary btn-sm');
        });
    });
});

答案 1 :(得分:0)

这个怎么样?

$(function() {
$("body").on("click", ".vote", function (event) {
    var clicked = this;  // save pointer to the clicked button
    var request = $.ajax({
        url: $(this).attr("href"),
        dataType: 'json'
    });
    event.preventDefault();

    //My problem START
    request.done(function (data) {
        $(clicked).attr('class', 'btn btn-primary btn-sm');
    });
    //My problem END

    request.fail(function (data) {
        alert("Voting failed!");
    });
});