Jquery函数挂起

时间:2013-10-09 20:10:24

标签: javascript jquery event-bubbling event-delegation

我正在使用名为h5validate的插件。我发现启动这个插件的唯一方法是点击(bluring)我要验证的字段,所以我的逻辑是设置一个函数,当我点击(当它发生)下一个按钮时,这个为我做这个;我试过直接调用validate函数但它不起作用。

无论如何,我的问题是:

1。这个函数挂起浏览器大约3秒,为什么?

$(document).on('click', '.tab', function () {
$this = $(this);
    if( $this.is('#tab1') )     { $('.tab-content-first .row .cell input:not(#ImageLocation)').blur(); }
    if( $this.is('#tab2') )     { $('.tab-content-1 .row .cell input:not(#ImageLocation)').blur(); }
    if( $this.is('#tab3') )     { $('.tab-content-2 .row .cell input:not(#ImageLocation)').blur(); }
    if( $this.is('#tab4') )     { $('.tab-content-3 .row .cell input:not(#ImageLocation)').blur(); }
    if( $this.is('#tab5') )     { $('.tab-content-4 .row .cell input:not(#ImageLocation)').blur(); }
    if( $this.is('#tab6') )     { $('.tab-content-5 .row .cell input:not(#ImageLocation)').blur(); }
});

修改 我兑换了$('this');作为建议的对象。

我已经决定它可能冒泡了,文档建议我停止传播(),但这不起作用,我正在使用委托,因为我通过ajax调用这可能是为什么stoppropagation()不会工作?

1 个答案:

答案 0 :(得分:0)

首先:$(this)应该被缓存。 $()的其余部分也可以在功能之前缓存。

第二:使用策略模式