当前位置: 代码迷 >> JavaScript >> 存储jQuery参考
  详细解决方案

存储jQuery参考

热度:48   发布时间:2023-06-05 10:32:54.0

是否可以在数组或对象中存储对元素的引用而在元素上没有唯一的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>));
        },

返回一个 。 所以答案是,是的,您可以将此返回对象存储在变量中:

var $yourObject = $(this).parent('tr').parent().find('.tableSomeTable');

首先,如果您要查找父表,请尝试

    var $myObj = $(this).closest('table.tableSomeTable');

而不是导航父母。

至于存储jQuery引用,先定义一个变量,然后存储它。 上面的代码会将对象存储在$ myObj中,但是该对象在本地范围内。 如果需要全局变量,则可以全局定义它,然后在此处分配它。 如果要将其定义为对象内的属性,请以这种方式进行定义。 在这一点上,它实际上归结为一个范围问题。

编辑:刚刚看到您添加的内容。

首先,不要将其命名为“对象”。 这可能会遇到关键字问题。 请改用var myObj或类似的方法。 接下来,object.btnHistory是对jQuery对象的引用。 因此,当您将其传递给loadHistory时,无需再次应用$(...)。 只需直接使用引用:result.btnHistory.html(...)。 养成良好习惯是在jQuery变量前加上$,这样您就已经知道它已经是jQuery变量。

  相关解决方案