jQuery самая близкая проблема с классами - PullRequest
0 голосов
/ 17 марта 2011

Вот мой JQuery

$('.vote_down').live('click', function() {
    var $votes = $(this);
    var c_id = $(this).closest('.c_id').val();
    var c_vote = $(this).closest('.c_vote').val();
    $.ajax({
        type: "POST",
        url: "votes.php",
        data: "c_id="+c_id+"&c_vote="+c_vote,
        success: function(html){
            $votes.parent().html(html);             
        }
    });
});

А вот HTML-код, из которого он извлекает:

Вары c_id и c_vote в настоящее время ничего не получают

<div class="votes">
    <input type="hidden" class="c_id" value="5" />
    <input type="hidden" class="c_vote" value="2" />
    <img src="down_vote.png" border="0" class="vote_down" alt="Down Vote" />
</div>

Ответы [ 2 ]

5 голосов
/ 17 марта 2011

Вы используете неправильную функцию. closest получает ближайшего предка . Поля ввода не являются предками изображения, они братья и сестры .

Вы можете сделать:

var c_id = $(this).prevAll('.c_id').val();
var c_vote = $(this).prevAll('.c_vote').val();

или если порядок всегда один и тот же:

var c_id = $(this).prev().prev().val();
var c_vote = $(this).prev().val();

Ссылка : prevAll, prev

0 голосов
/ 17 марта 2011
$('.vote_down').live('click', function() {
    var $votes = $(this);
    var c_id = $(this).prev('input.c_id:first').val();
    var c_vote = $(this).prev('input.c_vote:first').val();
    $.ajax({
        type: "POST",
        url: "votes.php",
        data: "c_id="+c_id+"&c_vote="+c_vote,
        success: function(html){
            $votes.parent().html(html);             
        }
    });
});

-отредактировано после вашего комментария, правда, моя ставка, я думаю пред () - Если вы всегда используете эту структуру HTML, почему бы не использовать prev () ; ? Попробуйте приведенный выше код

...