代码之家  ›  专栏  ›  技术社区  ›  SerchRac

如何在没有事件的dom外选择元素?

  •  0
  • SerchRac  · 技术社区  · 8 年前

    我需要执行:

    $('.btn-toolbar').toolbar({
        content: '#toolbar-options'
    });
    

    元素 .btn-toolbar 班级不在 多姆 因为是在和ajax请求之后添加的。 如何在dom之外选择元素? 是的。

    在另一个类似的问题中,它是通过委托事件解决的,但是我没有任何事件来管理它,我不需要启用单击它、悬停或任何其他事件。我只想用 btn-toolbar ,但是 $('.btn-toolbar') 现在是空的。

    2 回复  |  直到 8 年前
        1
  •  1
  •   Tanvir Ahmed    8 年前

    在将class.btn toolbar的元素放入dom后,可以在ajax调用success/complete上执行代码。

    $.ajax({
    ....
    }).done(function() {
      // Places/Inserts the .btn-toolbar elements in the page.
      $('.btn-toolbar').toolbar({
        content: '#toolbar-options'
      });
    });
    

    如果ajax调用是由其他脚本执行的,而您无法(例如,由其他插件的缩小脚本执行,或者该脚本来自其他站点)注入代码,那么您仍然可以干扰ajax调用并附加要运行的代码。 你可以用 jQuery.ajaxSetup() 自定义站点中的ajax调用。

    例如,只要ajax调用成功完成,就可以通过以下方式运行代码:

    $( document ).ajaxSuccess(function() {
      $('.btn-toolbar').toolbar({
        content: '#toolbar-options'
      });
    });
    
        2
  •  0
  •   BoltClock    8 年前

    如果一个元素不在任何元素子树中(即不是任何其他元素的子元素),并且您没有持有对它的引用(也没有任何其他对象引用它),那么它实际上就消失了,并且会受到垃圾收集的影响。

    如果你 持有对它的引用,您将需要使用该引用。如果它是其他元素的子元素(无论是否 那个 元素位于dom树中),则需要在选择中包含该父元素,这意味着您至少需要对该父元素的引用。否则你真的没有其他办法达到它。

    如果元素还不存在,而您只是说“在任何 .btn-toolbar 当它加载到页面中时”,则需要一个突变观察者。