好的,所以我一直在寻找这个问题几个小时的答案,但发现没有任何效果。
我有一个页面,我在.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');
});
更改函数永远不会被触发,除非我自己打开myinnerpage.aspx。
答案 0 :(得分:2)
您可以将myinnerpage.js代码放在主javascript中,而不是放在包含的页面中吗?
如果你不能,我不是“好解决方案”,但这可以帮助你:jQueryMobile-Navigation在用ajax加载页面时遇到了同样的问题,并且他们使用了非jquery解决方案来解决那。在他们的$ .ajax->成功中,他们使用innerHTML:
[...]
//workaround to allow scripts to execute when included in page divs
all.get( 0 ).innerHTML = html;
[...]
您可以看到他们的完整代码here。
它适用于页面div中包含的script-tag AND inline-javascript 。
答案 1 :(得分:1)
尝试手动触发事件?
$('#mybutton').click( function () {
$('#mydiv').load('myinnerpage.aspx', function(){
$('input[name=rbfileByNameOrID]:radio').trigger('change')
});
});
答案 2 :(得分:1)
$('input#rbByFileName').trigger('change');
OR:
$('input#rbByFileName').change();
$('#mybutton').click( function () {
$('#mydiv').load('myinnerpage.aspx', function(){
$('input#rbByFileName').change();
});
});
答案 3 :(得分:0)
此处的问题是,当.load
运行时,myinnerpage.aspx
的内容(完整地)放入#mydiv
。任何<script>
代码都会运行,但它们将来自当前页面的路径,因此您可能需要检查文件路径。
您可能需要更改脚本以使用绝对路径而不是相对路径,因为../
在当前页面和加载的页面上可能不同。