Javascript jQuery-如何处理尚未加载的可单击元素

Javascript jQuery-如何处理尚未加载的可单击元素,javascript,jquery,html,Javascript,Jquery,Html,我有一个工具栏,一点击就被注入到模板中。工具栏还包含一个下拉列表,如果用户在下拉列表外单击,该下拉列表将隐藏。要跟踪下拉列表外的单击,我使用$document.clickfunction。。。问题是文档上不存在下拉列表。准备好了,有什么可以改进的吗 JS 查找要单击的元素的父元素,该元素已经存在于DOM中,然后在其上使用.on。基本上,它所做的就是监听后代的点击,不管他们是否在那里 $('PARENT_ELEMENT_SELECTOR').on('click','DESCENDANT_SELEC

我有一个工具栏,一点击就被注入到模板中。工具栏还包含一个下拉列表,如果用户在下拉列表外单击,该下拉列表将隐藏。要跟踪下拉列表外的单击,我使用$document.clickfunction。。。问题是文档上不存在下拉列表。准备好了,有什么可以改进的吗

JS


查找要单击的元素的父元素,该元素已经存在于DOM中,然后在其上使用.on。基本上,它所做的就是监听后代的点击,不管他们是否在那里

$('PARENT_ELEMENT_SELECTOR').on('click','DESCENDANT_SELECTOR',function(e){
  //do what you want here
});

你可以这样做:

 var dropdown = false;
 $('.dropdown_name').click(function(){

      e.stopPropagation();
      $('.dropdown').show();
      dropdown = true; // dropdown is now visible

      $(document).click(function(){
          if(dropdown == true)
              $('.dropdown').hide();
              dropdown = false; // dropdown is invisible
      });

  });
您可以像这样在文档上使用

$(document).on( "click", ".dropdown_name", function(e) {
    e.stopPropagation();
    $('.dropdown').show();
});

documentready上是否也不存在.dropdown_name元素?在这种情况下,绝对没有理由在另一个事件处理程序中声明事件处理程序;每次单击.dropdown\u name元素时,您都会得到其他元素。这听起来像是一个事件委派问题,我不知道这段代码如何解决这个问题。
$(document).on( "click", ".dropdown_name", function(e) {
    e.stopPropagation();
    $('.dropdown').show();
});