新添加的元素$ .each和事件

时间:2015-06-03 16:35:04

标签: javascript jquery html

我已阅读$.each上已有的很多帖子以及新添加的元素+事件附件。关于StackOverflow上此主题的许多当前问题似乎对我不起作用。通常建议$.on(),因为它允许我们添加新元素,仍然维护单个事件侦听器+处理程序

在我目前的代码中:

1。$(‘input[type="checkbox"]’).on(“change”, function(e){});

  1. //我做了一个合乎逻辑的if语句,if(this.checked) else

  2. //在if - 语句中运行$.each但是,一旦我在此上下文中添加了新的li ul {{1}}它停止工作。

  3. 出于好奇,以前有人遇到这样的事情,如果是的话,你们有什么人解决这个问题?

    我已经看过一些 StackOverflow 帖子:

    jQuery $(element).each function doesn't work on newly added elements

    jquery: dynamically appending li items to ul then adding click, but click runs through each li

    Event binding on dynamically created elements?

1 个答案:

答案 0 :(得分:1)

目前您使用的是“直接”绑定,它只会在您的代码进行事件绑定调用时附加到页面上存在的元素。

  

委托事件的优势在于它们可以处理来自稍后添加到文档的后代元素的事件。

在创建元素时。

您需要使用Event Delegation。您必须使用委托事件方法来使用.on()

一般语法

    if CLLocationManager.locationServicesEnabled() && /* START UPDATE LOCATION GOES HERE */ {

        self.locationManager.delegate = self
        self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
        self.locationManager.requestAlwaysAuthorization()
        self.locationManager.startUpdatingLocation()

        //self.locationManager.startMonitoringSignificantLocationChanges()

        sender.setTitle("END DAY", forState: UIControlState.Normal)

    } else {


    }

理想情况下,您应该将$(document).on(event, selector, eventHandler); 替换为最近的静态容器。

实施例

document