我遇到自定义jQuery事件的问题,并通过委派来监听它,具体取决于事件的触发方式。两个p标记上都正确触发了字符串事件。但是,jQuery.Event对象仅在直接绑定的p标记上触发。我准备了一个小提琴演示:http://jsfiddle.net/s35bg/
这是HTML:
<p class="delegation">Via delegation:</p>
<p class="direct">Directly:</p>
JavaScript:
$(function () {
// bind using delegation
$(document).on('create', 'p.delegation', function (e) {
if (e.test) {
$(this).append(' $.Event');
} else {
$(this).append(' string');
}
});
// bind directly
$('p.direct').on('create', function (e) {
if (e.test) {
$(this).append(' $.Event');
} else {
$(this).append(' string');
}
});
// trigger the event with a string
$('*').trigger('create');
// trigger the event with an object
var event = $.Event('create');
event.test = true;
$('*').trigger(event);
});
结果是:
Via delegation: string
Directly: string $.Event
我期待:
Via delegation: string $.Event
Directly: string $.Event
我的问题是,为什么?我的期望是错的还是jQuery错了?提前谢谢!
答案 0 :(得分:1)
改变了最后一行。
之前的 强>:
var event = $.Event('create');
event.test = true;
$('*').trigger(event);
<强>后强>:
$('*').trigger({type:'create', test:true});