2012-09-09 90 views
0

我正在使用jQuery UI来增强两个ASP.Net无线电。点击时,我想改变用户界面,当我用Chrome调试器完成时,它会按预期工作,直到函数结束时退出,然后调试器进入实际的jQuery源代码,以及我的更改代码得到恢复。到底是怎么回事?jQuery函数在执行完成后跳入jQuery源代码

功能是如下:

$('input:radio').change(function(e){ 
      e.preventDefault(); 
      var $this = $(this); 
      var uploadBox = $this.parent().parent().next(); 
      var manualBox = $this.parent().parent().next().next(); 
      if ($this.attr('id') == "<%= UploadRadioButton.ClientID %>"){ 
       manualBox.hide(); 
       uploadBox.show(); 
      } 
      else{ 
       uploadBox.hide(); 
       manualBox.show(); 
      } 
     } 
    ); 

(.toggle()不会因某种原因工作)

调试器进入这个片段jQuery的源的:

if (ret !== undefined) { 
    event.result = ret; 
    if (ret === false) { 
    event.preventDefault(); 
    event.stopPropagation(); 
    } 
} 

编辑: 我忘了提及的JavaScript坐在UserControl。

+0

评论e.preventDefault();与/和再试一次? – dbf

+0

@dbf仍然不起作用:( – Lee

+0

我建议不要使用服务器端语言来生成JavaScript,而应该使用类和'[data - *]'属性以及jQuery的['data'](http:// api .jquery.com/data)方法。 – zzzzBov

回答

1

当它完成您的事件处理程序时,它会进入管理事件处理程序(实际上称为您的事件处理程序的代码)的jQuery代码,以及您在其中发布的是jQuery代码,而不是处理从事件处理程序返回值决定是否打算停止传播并防止默认行为。这很正常。

+0

这很有道理,但为什么我的更改在后? – Lee

+0

@lee - we 'd必须看到你的实际页面评论此处发生了什么。 – jfriend00

+0

我把代码放在这里:http://pastebin.com/bgbjr6P7 – Lee