如何获取第一个jQuery对象的父级?

时间:2013-04-25 21:09:30

标签: javascript jquery

我有以下代码,它在一个包含多个button.enter-match元素的长表的末尾运行:

$("button.enter-match")
.button()
.on('click', function() {
    $("form.enter-match").dialog({
        modal: true,
        height: 'auto',
        width: 200,
        close: function() {
            $("form.enter-match input[name='code']").val('');
        },
        open: function() {
            $("form.enter-match input[name='code']").val('').focus();
        },
        buttons: {
            Set: function() {
                pid = $(this).parents("[data-pid]").data('pid');

                if ($("form.enter-match input[name='code']").val() == '') {
                    alert('Code empty!');

                    return false;
                }

                $.post(
                    request_url,
                    {
                        'action': 'set_match',
                        'pid': pid,
                        'code': $("form.enter-match input[name='code']").val()
                    },
                    function (data) {
                        error_handler(data);

                        if (data['error'] == null) {
                            $("tr#pid-" + pid + " td.code:first div").html('<i>' + $("form.enter-match input[name='code']").val() + '</i>');
                            $("form.enter-match").dialog('close');
                        }
                    },
                    'json'
                );
            }
        }
    });
});

pid = $(this).parents("[data-pid]").data('pid');未获取pid数据值,因为form#enter_match是在文档的最顶部创建的,可根据需要在代码中重复使用。因此,它不会有[data-pid]属性的父级,但是button.enter-match会。如何从代码的[data-pid]部分中获取此特定button.enter-match的{​​{1}}值?

1 个答案:

答案 0 :(得分:0)

无法找到一种方法来获取下一个对象,所以我只是将pid = $(this).parents("[data-pid]").data('pid');移到了.on('click', function() {行下面的下一个范围,它解决了所有情况下的问题。

感谢所有指出我关于ID和类的错误编码实践的人。我已经更新了我的编码风格,以反映更好的原则。