jQuery 最接近的类问题

发布于 2024-10-23 16:16:58 字数 780 浏览 1 评论 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:

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>

Here is my 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);             
        }
    });
});

And here is the html it's pulling from:

The vars c_id and c_vote currently get nothing

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

似最初 2024-10-30 16:16:58

您使用了错误的功能。 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上一页

You are using the wrong function. closest gets the closest ancestor. The input fields are not ancestors of the image, they are siblings.

You can do:

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

or if the order is always the same:

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

Reference: prevAll, prev

空心空情空意 2024-10-30 16:16:58
$('.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);             
        }
    });
});

-在你的评论后编辑,我敢打赌,我ment prev()-
如果你总是使用这种 HTML 结构,为什么不使用 prev(); ?尝试上面的代码

$('.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);             
        }
    });
});

-edited after your comment, true my bet, I ment prev()-
If you always use this HTML structure, why not use prev(); ? Try the above code

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文