isNan在jQuery中使用此选择器和动态内容

时间:2015-01-19 12:28:45

标签: javascript jquery ajax

这是我正在尝试使用的功能

$('body').on('click', '.up-vote', function(event) {
    event.preventDefault();
    var data = {"action": "voteKarma", "id": $(this).data("id"), "value": $(this).data("val")}
    $.post(window.apiURL, data, function(result) {
        switch(result['status']) {
            case 1:
                var vote_sum_text = $(this).next(".sum").text();
                if (!isNaN(parseInt(vote_sum_text, 10))) {
                    var vote_sum_text = $(this).next(".sum").text();
                } else { alert("isNaN Variable") } 
            break;
    }, 'json');
});

当Ajax结果返回 0 时,它返回一个带有 isNaN变量的警报,这是我的问题调试回退。

这是我的HTML布局,使用另一个Ajax请求动态抓取,其中有多个这些div以<li>格式列出:

<div class="votes pull-left">
    <a class="up-vote" href="#" data-id="20" data-val="1"><span class="fa fa-arrow-circle-o-up"></span></a>
    <span class="sum" style="font-weight:400;color:#666;">
         0
    </span>
    <a class="down-vote" href="#" data-id="20" data-val="0"><span class="fa fa-arrow-circle-o-down"></span></a>
</div> 

简单来说;当您点击.up-vote.down-vote时,它会发送一个AJAX请求,然后抓取text() .sum的{​​{1}}。

2 个答案:

答案 0 :(得分:2)

尝试使用

$(event.currentTarget).next(".sum").text();

因为this中的.post未引用元素

答案 1 :(得分:0)

您还可以使用以下内容:

$('body').on('click', '.up-vote', function(event) {
   event.preventDefault();
   var up_vote_this = $(this);
   ....
   ....
   //now you can use the variable in the success function...

      var vote_sum_text = up_vote_this.next(".sum").text();