0

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$("form.enter-match").dialog()

4

1 回答 1

0

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

感谢所有指出我在 ID 和类方面的糟糕编码实践的人。我更新了我的编码风格以反映更好的原则。

于 2013-04-26T17:10:41.153 回答