如何将事件绑定到另一个动态创建的元素中的动态创建元素?

时间:2016-08-13 07:03:15

标签: javascript jquery

使用jQuery将事件绑定到具有静态祖先的动态创建元素相当容易,如this answer中所示:

$(staticAncestors).on(eventName, dynamicChild, function() {});

但如果dynamicChild属于dynamicAncestor怎么办?有没有办法做以下工作:

$(dynamicAncestors).on(eventName, dynamicChild, function() {});

2 个答案:

答案 0 :(得分:2)

使用public MuteReceiver() { Log.d("MuteReceiver", "constructed"); } @Override public void onReceive(Context context, Intent intent) { final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean started = prefs.getBoolean(MuteService.STARTED, false); Log.d("MuteReceiver", "Started=" + started); } 时,应绑定到最近的静态父元素。在某些情况下,可能是on

body

将所有事件绑定到$('body').on(eventName, 'dynamic-element', function() { }); 通常都是不好的做法,因此如果没有看到您的DOM,就很难彻底回答您的问题。但是绑定到最近的静态父级将适用于您尝试实现的目标。

答案 1 :(得分:1)

如果dynamicAncestors是选择器,。绑定事件处理程序时,元素必须存在。这是事件委派的关键点:使用静态父级作为中间件来侦听(动态生成的)后代的事件。您可能正在寻找以下语法:

$('staticParentOfdynamicAncestors').on(
   eventName, 
  'dynamicAncestors dynmaicChild', 
  function() {}
);

检查Understanding Event Delegation