2015-01-19 4 views
1

Вот функция, которую я пытаюсь использоватьIsNaN, используя этот селектор с динамическим содержимым в JQuery

$('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 возвращает Это возвращение предупреждение с IsNaN Variable, который мой возврат к отладка с проблемой.

Вот мой HTML макет, который схватился динамически с помощью другого запроса Ajax Есть несколько из этих див, перечисленных в <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.

ответ

2

Try использование

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

Поскольку this в .post не относится к элементу

+0

Ты звезда, работает отлично! – Curtis

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(); 
Смежные вопросы