Javascript jQuery on()方法-使用哪种方法对性能更有利?

Javascript jQuery on()方法-使用哪种方法对性能更有利?,javascript,click,jquery,Javascript,Click,Jquery,将on()事件附加到文档或更接近的父级是否更好? 注:最初这个问题有另一个方面和不同的主题。它很快就过时了(源代码中的输入错误)如果您将“on”事件绑定到最近的父事件,那么将生成您想要的内容,即使将其附加到文档中,单击函数也可以正常工作,但将来如果您附加任何具有类“clickable”的元素,它也将被绑定。因此,将“on”事件附加到最接近的父级而不是整个文档始终是一种好的做法 如果您想要更具体,可以使用 $("ul.media-grid").on('click', 'li.clickable',

将on()事件附加到文档或更接近的父级是否更好?

注:最初这个问题有另一个方面和不同的主题。它很快就过时了(源代码中的输入错误)

如果您将“on”事件绑定到最近的父事件,那么将生成您想要的内容,即使将其附加到文档中,单击函数也可以正常工作,但将来如果您附加任何具有类“clickable”的元素,它也将被绑定。因此,将“on”事件附加到最接近的父级而不是整个文档始终是一种好的做法

如果您想要更具体,可以使用

$("ul.media-grid").on('click', 'li.clickable', function () {
  alert("works")
});
由于它将通过类“media grid”获得ul,并通过类“clickable”将事件附加到li中

如果您将“on”事件绑定到最接近的父事件,则将生成您想要的内容,即使将其附加到文档中,单击功能也将正常工作,但将来如果您使用类“clickable”附加任何元素也将被绑定。因此,将“on”事件附加到最接近的父级而不是整个文档始终是一种好的做法

如果您想要更具体,可以使用

$("ul.media-grid").on('click', 'li.clickable', function () {
  alert("works")
});

由于它将通过类“media grid”获得ul,并通过类“clickable”将事件附加到li上,因此使用jQuery的最佳性能关键是使用
id
作为初始标识符。例如:

$('#my_id').on('click', 'tag.my_class', function () {
    ...
});

这允许jQuery直接进入容器,然后从那里开始拖网

使用jQuery的最佳性能关键是使用
id
作为初始标识符。例如:

$('#my_id').on('click', 'tag.my_class', function () {
    ...
});

这允许jQuery直接进入容器,然后从那里开始拖网

您是否可以发布其余的代码,在
上发生了一些其他的事情,请参见此处查看您的代码工作示例。您是否可以发布其余的代码,在
上发生了一些其他的事情请参见此处查看您的代码工作示例,这是唯一的良好做法还是会提高性能,太好了?@Horen it还将提高性能,因为它不会查看整个文档并找到类为“clickable”的li,而是会查找类为“media grid”的ul并这样做。@Nick sure mate,使用id代替类是一种很好的做法,因为,如果您想为一个或多个元素执行类似的功能,我们可以使用类,当您需要将某些功能添加到一个特定元素时,最好使用id。@shreedhar我基本上同意您的看法,但我对jquery文档中关于.live()的内容感到困惑。其中指出,.live()的缺点之一是“jQuery在调用.live()方法之前会尝试检索选择器指定的元素,这在大型文档上可能会很耗时。”这意味着,.on()不能做到这一点。这只是一种好的做法还是会提高性能,太好了?@Horen it还将提高性能,因为它不会查看整个文档并找到类为“clickable”的li,而是会查找类为“media grid”的ul并这样做。@Nick sure mate,使用id代替类是一种很好的做法,因为,如果您想为一个或多个元素执行类似的功能,我们可以使用类,当您需要将某些功能添加到一个特定元素时,最好使用id。@shreedhar我基本上同意您的看法,但我对jquery文档中关于.live()的内容感到困惑。其中指出.live()的一个缺点是“jQuery在调用.live()方法之前尝试检索选择器指定的元素,这在大型文档上可能会很耗时。”这意味着.on()不会这样做。