2012-10-09 128 views
1

不確定如何解決這個問題。IE中的jQuery focus()和focusout()衝突

我使用jQuery.focus()jQuery.focusout()來觸發Ajax請求並在WordPress中重命名文章。此代碼在Chrome和Firefox中可以正常工作,但我無法在IE上運行它。

片段:

$('.editname').on('click', function() { 

    var input = $('<input id="editcat" type="text" name="editcat" value="' + name + '" />'); 
    input.appendTo($(this)); 
    $("#editcat").focus(); 
}); 

$(".editname").focusout(function() { 

    $(this).children('input').detach(); 
    $(this).children('span').show(); 


}); 

工作示例:http://jsfiddle.net/moraleida/fE5Tq/3/

似乎事件的內容()事件在IE中appendTo之後稱爲,瀏覽器有時間focus()上所附的輸入之前。

有沒有已知的解決方法呢?

編輯

更改focusoutblur不起作用。顯然,問題在於撥打$("#editcat").focus();使得.editname鬆散焦點/模糊。如果我評論該行,輸入顯示正常,但是當我點擊以關注它時,它會被分離。

回答

2

事實證明,問題在於將focusout附加到父元素,而不是input元素。這解決了它:

$(".editname").on('focusout', 'input', function() { 

    // $(this) now refers to the input element, not .editname 
    $(this).siblings('span').show(); 
    $(this).detach(); 


    }); 
});​ 

最終工作搗鼓參考:http://jsfiddle.net/moraleida/fE5Tq/8/

2

嘗試模糊事件,而不是

$(".editname").on('blur', function() { 

    $(this).children('input').detach(); 
    $(this).children('span').show(); 


}); 
+0

感謝,而且執行模糊不起作用。顯然,問題在於「重點」。查看編輯。 – moraleida

1

嘗試使用,而不是事件的內容模糊事件。

+0

謝謝,但模糊也行不通。顯然,問題在於「重點」。查看編輯。 – moraleida