3

看看这个:http: //jsfiddle.net/9c4xG/

$('.container').on('change.namespace focusout.namespace', '.item', function(event) {
    $('<p>', {
        'text': 'event: ' + event.type   
    }).appendTo('.container');
});

案例 1:如果您在输入焦点时按 Tab - 触发一个事件(焦点输出);案例 2:如果您在输入中键入任何单词并按 Tab - 触发两个事件(聚焦、更改);

当第一个事件被触发时,如何在案例 2 中阻止所有类似事件。

如果触发多个事件,是否有一种通用方法可以仅使用其中一个事件(聚焦、更改、..)?并禁用其他名称空间或当前处理程序。

对不起,愚蠢的英语。

4

2 回答 2

1

AFAIK 唯一的方法是自己处理这个问题:

$('selector').on('events', function() {
    if ($(this).data('handling-event')) {
        return;
    }
    $(this).data('handling-event', true);
    .... code here ....
    $(this).data('handling-event', null);
});
于 2013-10-22T15:19:24.647 回答
1

使用标志作为信号量...

$('YourInput').on('events',function(e) {
    var t = $(this), data = t.data('flag') || false;
    if (data) {
        return;
    }
    // Locking semaphore
    t.data('flag', true);
    // Your code here
    // Free semaphore
    t.data('flag', false);
});
于 2013-10-22T15:18:04.200 回答