小编flo*_*ish的帖子

jQuery模糊事件在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());
    }

});
Run Code Online (Sandbox Code Playgroud)

但问题是,在Chrome中,blur当我切换到另一个应用程序(tab)时,事件会被触发两次.这会产生错误,因为它不可能删除节点,因为它已经消失了:

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 
Run Code Online (Sandbox Code Playgroud)

Firefox似乎工作正常.

那么为什么blur事件会被解雇两次,我该如何防止这种情况发生呢?

编辑 - 在这个问题中尝试了答案,但没有运气.仍然在Chrome中收到错误消息,我做错了什么?

看到更新的小提琴

有没有办法检查元素是否仍然存在?因为第二次 …

javascript jquery google-chrome

6
推荐指数
1
解决办法
3486
查看次数

Chef Apache2 cookbook的默认属性为nil

我正在尝试使用Chef-solo(11.4.4)配置一个Ubuntu 13.04盒子,但是apache2 cookbook给出了一个错误:

undefined method `[]' for nil:NilClass

 20:  package "apache2" do
 21>>   package_name node['apache']['package']
 22:  end
Run Code Online (Sandbox Code Playgroud)

我的猜测是没有加载cookbook的默认属性,即node ['apache']为零,但我不知道如何解决这个问题...

case platform  
when "debian", "ubuntu"
   default['apache']['package'] = "apache2"
Run Code Online (Sandbox Code Playgroud)

我知道Chef v11对属性进行了一些更改,之前使用Chef v10它只是有效,但我没有足够的厨师知识知道要改变什么.

任何帮助表示赞赏!

apache cookbook chef-infra

2
推荐指数
1
解决办法
962
查看次数