簡體   English   中英

jQuery模糊事件在Chrome中被觸發兩次

[英]jQuery blur event fired twice in Chrome

我用輸入字段創建了一個簡單的“無限”形式。 每次聚焦空輸入時都會創建一個新輸入,並且在空輸入字段模糊時,該字段將被刪除。

這里的例子

我使用以下代碼來實現這一切:

var $input = $('<div/>').html( $('<input/>').addClass('value') );
$('form').append( $input.clone() );

$('form').on( 'focus', 'input.value', function(e) {

    // Add new input if the focused one is empty
    if(!$.trim(this.value).length) {
        $('form').append( $input.clone() );
    }


}).on( 'blur', 'input.value', function(e) {
    var $this = $(this);

    if( !$.trim(this.value).length ) {
        console.log('REMOVING INPUT');
        $this.parent().remove();
    } else {
        $this.attr('name', 'item-'+$this.val());
    }

});

但問題是,在Chrome中,當我切換到另一個應用程序時, blur事件會被觸發兩次( 標簽 )。 這會產生錯誤,因為它不可能刪除節點,因為它已經消失了:

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 

Firefox似乎工作正常。

那么為什么blur事件被觸發兩次,我該如何防止這種情況發生呢?

編輯 - 在這個問題中嘗試了答案,但沒有運氣。 仍然在Chrome中收到錯誤消息,我做錯了什么?

看到更新的小提琴

有沒有辦法檢查元素是否仍然存在? 因為第二次blur觸發節點被刪除。 $(this).length仍然是非零。

這看起來像Blink中的一個錯誤,在Chromium項目的頁面上有關於該錯誤的報告: http//code.google.com/p/chromium/issues/detail?id = 253253

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM