jQuery与类最接近的问题

时间:2011-03-16 23:23:06

标签: jquery closest

这是我的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:

vars c_idc_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 个答案:

答案 0 :(得分:5)

您使用的功能错误。 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();

参考prevAllprev

答案 1 :(得分:0)

$('.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(); ?试试上面的代码