我有以下代码,它在一个包含多个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}}值?
答案 0 :(得分:0)
无法找到一种方法来获取下一个对象,所以我只是将pid = $(this).parents("[data-pid]").data('pid');
移到了.on('click', function() {
行下面的下一个范围,它解决了所有情况下的问题。
感谢所有指出我关于ID和类的错误编码实践的人。我已经更新了我的编码风格,以反映更好的原则。