Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery.on方法没有响应_Javascript_Jquery_Html_Click - Fatal编程技术网

Javascript JQuery.on方法没有响应

Javascript JQuery.on方法没有响应,javascript,jquery,html,click,Javascript,Jquery,Html,Click,我正在使用jquery2.1.0。我已经将一些元素(包含label)注入到div元素中。我使用下面的JavaScript来处理所有标签上的点击事件,但它完全没有响应。我检查并加载了Jquery $('label').on("click", function () { var ul = $(this).parent().children("ul:first"); if (ul.is(':visible')) { ul.css({ "display": "none"

我正在使用jquery2.1.0。我已经将一些元素(包含
label
)注入到
div
元素中。我使用下面的JavaScript来处理所有标签上的点击事件,但它完全没有响应。我检查并加载了Jquery

$('label').on("click", function () {
    var ul = $(this).parent().children("ul:first");
    if (ul.is(':visible')) {
        ul.css({ "display": "none" });
    }
    else {
       ul.css({ "display": "block" });
    }
});

我在IE10中使用了开发工具并调试了代码。当我点击F5时,它会进入我的断点(在我代码的第一行),但当我点击
标签时,不会发生任何事情,也不会出现任何错误。

这将仅将事件处理程序分配给最初存在于页面上的
标签
元素:

$('label').on("click", function () {
  // ...
});
要捕获稍后添加的元素,需要将事件处理程序分配给一个公共父元素(在页面生命周期内不会添加/删除),并过滤源元素,如下所示:

$(document).on('click', 'label', function () {
  // ...
});
请注意,有两个选择器:

  • 文档
  • “标签”
第一个是事件处理程序的目标,在页面加载时(或者在计算这行代码时,通常是在页面加载时)只计算一次。这会将处理程序附加到
文档
对象。由于所有事件都“冒泡”到父元素,因此这将捕获页面上的所有单击事件(当然,除非明确停止传播)

第二个是
.on()
方法的处理程序的“过滤器”,它在该处理程序捕获事件时进行计算。它过滤掉引发
单击事件的元素,这样处理程序只对与过滤器匹配的元素执行


实际上,我已经讨论过这个主题。

这只会将事件处理程序分配给最初存在于页面上的
标签
元素:

$('label').on("click", function () {
  // ...
});
要捕获稍后添加的元素,需要将事件处理程序分配给一个公共父元素(在页面生命周期内不会添加/删除),并过滤源元素,如下所示:

$(document).on('click', 'label', function () {
  // ...
});
请注意,有两个选择器:

  • 文档
  • “标签”
第一个是事件处理程序的目标,在页面加载时(或者在计算这行代码时,通常是在页面加载时)只计算一次。这会将处理程序附加到
文档
对象。由于所有事件都“冒泡”到父元素,因此这将捕获页面上的所有单击事件(当然,除非明确停止传播)

第二个是
.on()
方法的处理程序的“过滤器”,它在该处理程序捕获事件时进行计算。它过滤掉引发
单击事件的元素,这样处理程序只对与过滤器匹配的元素执行

实际上,我已经了解了这个主题。

您需要使用,因为您的标签是动态创建的元素:

事件委派允许我们将单个事件侦听器附加到 父元素,将为与选择器匹配的所有子元素激发, 无论这些孩子现在存在还是将来被添加

基本上,事件委派将帮助您将单击事件附加到案例中新添加的
标签
元素

您需要使用,因为您的标签是动态创建的元素:

事件委派允许我们将单个事件侦听器附加到 父元素,将为与选择器匹配的所有子元素激发, 无论这些孩子现在存在还是将来被添加

基本上,事件委派将帮助您将单击事件附加到案例中新添加的
标签
元素上

事件委派允许您将单个事件侦听器附加到父元素,该事件侦听器将为与选择器匹配的所有子元素激发,无论这些子元素现在存在还是将来添加。

您应该使用该事件侦听器


事件委派允许您将单个事件侦听器附加到父元素,该事件侦听器将为与选择器匹配的所有子元素触发,无论这些子元素现在存在还是将来添加。

从本答案到此处的另一个问题:


这个方法似乎不适用于Chrome中的一些内联元素。如果您的元素是内联的,请尝试将显示更改为block。

从这个答案到这里的另一个问题:


这个方法似乎不适用于Chrome中的一些内联元素。如果您的元素是内联的,请尝试将显示更改为block。

如果没有事件委派,您只能将处理程序附加到已注入的元素(正如上面的家伙所指出的),此外,使用
.show()
.hide()
如果没有事件委派,您只能将处理程序附加到已注入的元素(正如上面的家伙所指出的)另外,使用
.show()
.hide()