使用jQuery将事件绑定到具有静态祖先的动态创建元素相当容易,如this answer中所示:
$(staticAncestors).on(eventName, dynamicChild, function() {});
但如果dynamicChild
属于dynamicAncestor
怎么办?有没有办法做以下工作:
$(dynamicAncestors).on(eventName, dynamicChild, function() {});
答案 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() {}
);