4

好的,所以我已经为此寻找了几个小时的答案,但没有发现任何有效的方法。

我有一个页面,我在 .click 事件后加载到 div 中,看起来像这样:

$('#mybutton').click( function () { $('#mydiv').load('myinnerpage.aspx'); });

然后我在 myinnerpage.js 里面有:

$(document).on('change', 'input[name=rbfileByNameOrID]:radio', function () {
if ($('input#rbByFileName').attr('checked'))
    fileSelectionBy('filename');
else
    fileSelectionBy('fileid'); 
});

change 函数永远不会被触发,除非我自己打开 myinnerpage.aspx。

4

4 回答 4

2

您可以将 myinnerpage.js 代码放在主 javascript 中,而不是放在包含的页面中吗?

如果你不能,我没有“好的解决方案”,但这可以帮助你:jQueryMobile-Navigation 在使用 ajax 加载页面时遇到了同样的问题,他们使用了非 jquery 解决方案来解决这个问题。在他们的 $.ajax->success 中,他们使用了 innerHTML :

[...]

//workaround to allow scripts to execute when included in page divs
all.get( 0 ).innerHTML = html;

[...]

你可以在这里看到他们的完整代码。

它适用于页面 div 中包含的script-tag和 inline-javascript 。

于 2012-04-30T16:39:27.867 回答
1

尝试手动触发事件?

$('#mybutton').click( function () { 
  $('#mydiv').load('myinnerpage.aspx', function(){
      $('input[name=rbfileByNameOrID]:radio').trigger('change')
   }); 
});
于 2012-04-30T16:22:06.583 回答
1
$('input#rbByFileName').trigger('change');

或者:

$('input#rbByFileName').change();

$('#mybutton').click( function () { 
  $('#mydiv').load('myinnerpage.aspx', function(){
      $('input#rbByFileName').change();
  }); 
});
于 2012-04-30T16:31:09.367 回答
0

这里的问题是,当.load运行时, 的内容myinnerpage.aspx(全部)放入#mydiv. 任何<script>标签都会运行,但它们来自当前页面的路径,因此您可能需要检查文件路径。

您可能需要更改脚本以使用绝对路径而不是相对路径,因为../在当前页面和加载的页面上可能不一样。

于 2012-04-30T18:07:08.273 回答