问题描述
是否可以在数组或对象中存储对元素的引用而在元素上没有唯一的ID?
我在将子表存储在另一个表中时遇到麻烦,因此以后可以引用它。 我通过以下代码按类获取表:
$(this).parent('tr').parent().find('.tableSomeTable');
是唯一在每个元素上具有唯一ID并使用.selector方法的解决方案吗?
我的代码更多。 升技简化了。
var rows = [];
var historyLoad;
$(document).on("click", '.details-control', function (e) {
var t = $(this);
var tr = t.closest('tr');
var row = t.parent().parent().parent().DataTable().row(tr);
var id = t.closest('tr').attr('id');
var object = {
id: id,
btnHistory: t.parent('tr').next().find('#btnHistory'),
tblHistory: t.parent('tr').parent().find('.tableHistory'),
historyLoad: historyLoad
};
if ($.inArray(id, rows) > -1) {
loadData = false;
}
else {
loadData = true;
loadHistory(object);
rows.push(object);
}
};
这是我在检索正确元素时遇到的问题。 我也想将ajaxHistory元素保存到我的对象中(工作正常)。 这段代码不起作用,但是如果我将其更改为$(result.btnHistory.btnHistory.selector),则会得到该对象。 但这似乎不适用于多行。
function loadHistory(result) {
result.ajaxHistory = $.ajax({
...
beforeSend: function () {
$(result.btnHistory).html(<loading txt>);
$(result.tblHistory).find('tbody').html(<loading txt>);
},
....
success: function (data) {
if (data.TotalRecordCount > 0) {
$(result.tblHistory).find('tbody').html('');
$.each(data.Records, function (e, o) {
$(result.tblHistory).find('tbody').append(<data>)
});
}
else {
$(result.tblHistory).find('tbody').html(<txt no records>);
}
$(result.btnHistory).html(<txt loading done>));
},
1楼
Thomas Stringer
1
2015-07-30 13:34:02
返回一个 。 所以答案是,是的,您可以将此返回对象存储在变量中:
var $yourObject = $(this).parent('tr').parent().find('.tableSomeTable');
2楼
nurdyguy
1
已采纳
2015-07-30 14:03:08
首先,如果您要查找父表,请尝试
var $myObj = $(this).closest('table.tableSomeTable');
而不是导航父母。
至于存储jQuery引用,先定义一个变量,然后存储它。 上面的代码会将对象存储在$ myObj中,但是该对象在本地范围内。 如果需要全局变量,则可以全局定义它,然后在此处分配它。 如果要将其定义为对象内的属性,请以这种方式进行定义。 在这一点上,它实际上归结为一个范围问题。
编辑:刚刚看到您添加的内容。
首先,不要将其命名为“对象”。
这可能会遇到关键字问题。
请改用var myObj或类似的方法。
接下来,object.btnHistory是对jQuery对象的引用。
因此,当您将其传递给loadHistory时,无需再次应用$(...)。
只需直接使用引用:result.btnHistory.html(...)。
养成良好习惯是在jQuery变量前加上$,这样您就已经知道它已经是jQuery变量。