Jquery 实时模糊和实时焦点

我正在动态打开一个对话框。单击链接时,它会查找信息并将其显示在其中。

$('.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_' + vmid 不再 fadeIn()slideUp()slideDown() 和 blur 函数什么都不做呢?

我也尝试过使用focusin和focusout。

谢谢。

stack overflow Jquery live blur and live focus
原文答案

答案:

作者头像

随着新版本的jQuery live(),您应该在()上使用(注意新格式):

$(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/

作者头像
$(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');

用最近的非动态父级替换文档。至于为什么它在第二次点击时不起作用,如果没有看到更多实际代码,这真的很难回答。