1

ダイアログボックスを動的に開いています。リンクをクリックすると、情報が検索され、その中に表示されます。

$('.comment').live('blur', function(){
    var split = (this.id).split("_");
    var id = split[1];

    $('#face_'+ id).fadeOut();
    $('.commentbutton').hide();
    $("#comments_" + id).slideDown();
})

//////////////////////////////////////////////////

// commentopen 
$(".comment").live("focus", function() { 
    var split = (this.id).split("_");
    var vmid = split[1]; 

    $("#face_" + vmid).fadeIn();
    $("#comments_" + vmid).slideUp();
    $('#commentbutton_' + vmid).show();

});

ダイアログを最初に開いたときは問題なく動作しますが、ダイアログを閉じて再度開こうとすると、少なくとも Firefox では機能しなくなります。

アラートを出すと、ID が送信されたことが示されます。しかし、なぜ、、、 および$('.commentbutton')ぼかし機能が何もしない#face_' + vmidfadeIn()でしょうか?slideUp()slideDown()

focusin と focusout も試しました。

ありがとう。

4

2 に答える 2

0
$(document).on({
    blur: function(){
        var id = this.id.split("_")[0];
        $('#face_'+id).fadeOut();
        $('.commentbutton').hide();
        $("#comments_"+id).slideDown();
    },
    focus: function() {
        var vmid = this.id.split("_")[1];
        $("#face_"+vmid).fadeIn();
        $("#comments_"+vmid).slideUp();
        $('#commentbutton_'+vmid).show();
    }
},'.comment');

ドキュメントを最も近い非動的な親に置き換えます。セカンドクリックで機能しない理由については、実際のコードをもっと見ずに答えるのは本当に難しいです。

于 2012-04-23T16:59:27.190 に答える
0

jquery live() の新しいバージョンでは、代わりに on() を使用する必要があります (新しい形式に注意してください)。

$(document).on('blur','.comment', function(){
   var split = (this.id).split("_");
   var id = split[1]; 
   $('#face_'+ id).fadeOut();
   $('.commentbutton').hide();
   $("#comments_" + id).slideDown();
});
         //////////////////////////////////////////////////

         // commentopen 
$(document).on("focus",".comment", function() { 
   var split = (this.id).split("_");
   var vmid = split[1]; 

   $("#face_" + vmid).fadeIn();
   $("#comments_" + vmid).slideUp();
   $('#commentbutton_' + vmid).show();

});

http://api.jquery.com/on/

于 2012-04-23T16:54:16.003 に答える