jQuery自定义事件通过对象未触发

时间:2013-10-07 23:12:02

标签: jquery events

我遇到自定义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错了?提前谢谢!

1 个答案:

答案 0 :(得分:1)

改变了最后一行。

之前的

var event = $.Event('create');
event.test = true;
$('*').trigger(event);

<强>后

$('*').trigger({type:'create', test:true});