0

ここに私の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_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>
4

2 に答える 2

4

間違った機能を使用しています。最も近い祖先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

于 2011-03-16T23:30:16.363 に答える
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);             
        }
    });
});

-あなたのコメントの後に編集されました、私の賭けは本当です、私は prev() をメンターします- この HTML 構造を常に使用する場合は、prev()を使用しないでください。? 上記のコードを試してください

于 2011-03-16T23:25:58.667 に答える