我如何修改这段代码,以便文档每次都搜索它?

How do I modify this code so that the document searches for it every time?

如何修改以下 3 行代码,使其使用 $(document) ?

    $('.navbar li ul').slideToggle(300);

    $('.navbar > li:first-child > span').text("Category");

    if (!container.is(e.target)

文档使用示例:

    document.getElementById("input1").focus();

    $(document).on('click', '.navbar ul span', function(event) {    
    });

    $(document).mouseup(function (e) { 
    });

等...

看来您对 jQuery 选择器有点困惑。

 $('.navbar li ul').slideToggle(300);

已经搜索了整个文档。如果省略 jQuery 对象的第二个参数,则它隐含为 document。所以,上面的选择器等同于:

 $('.navbar li ul', document).slideToggle(300);

document 作为第二个参数省略是一个捷径。如果它不存在,默认情况下由 jQuery 库假定。

像这样:

document.getElementById("input1")

是一个普通的 Javascript 语句 - 没有 jQuery,没有 CSS 选择器。这是另一种通过 id 查找元素的方法,大致等同于 jQuery 语句:

$("#input1")

或普通的 Javascript:

document.querySelector("#input1");

从您的评论来看,您可能想问的是如何使用委托事件处理,以便您的查询可以处理动态创建的元素。如果是这种情况,您应该编辑您的问题以实际这么说。将来,请描述您试图解决的问题,而不是您尝试的解决方案。那么,我们可以更全面地帮助您。

如果是这样,那么你可以使用这个,然后委托事件处理只适用于事件处理程序,它不适用于一次性命令,如:

$('.navbar li ul').slideToggle(300);

当你 运行 它时,它会在任何存在的元素上起作用,并且没有 document 等价物或任何方法可以使它对动态元素更好或更差。它适用于您调用它时存在的任何元素,因为它不是未来事件的事件处理程序安装。这是您在这个特定时刻执行的操作,因此它只能对当前存在的元素起作用。


您可能会发现这些其他答案对了解有关这些问题的更多信息很有用:

Should all jquery events be bound to $(document)?

jQuery .live() vs .on() method for adding a click event after loading dynamic html

JQuery Event Handlers - What's the "Best" method

Does jQuery.on() work for elements that are added after the event handler is created?