Jquery现场模糊和现场焦点

时间:2012-04-23 16:49:13

标签: jquery focus live blur

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

$('.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()和模糊功能无效?

我也尝试过focusin和focusout。

感谢。

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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');

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