簡體   English   中英

JQuery .on()更改事件未觸發(頁面在.load()內)

[英]JQuery .on() change event not firing(page is inside a .load())

好的,所以我一直在尋找這個問題的答案幾個小時,但沒有發現任何有效的方法。

我有一個頁面,我在.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。

您可以將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;

[...]

你可以在這里看到他們的完整代碼。

它適用於頁面div中包含的script-tag 和inline-javascript

嘗試手動觸發事件?

$('#mybutton').click( function () { 
  $('#mydiv').load('myinnerpage.aspx', function(){
      $('input[name=rbfileByNameOrID]:radio').trigger('change')
   }); 
});
$('input#rbByFileName').trigger('change');

要么:

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

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

這里的問題是,當.load被運行,內容myinnerpage.aspx被放置(其全部)成#mydiv 任何<script>標簽都會運行,但它們將來自當前頁面的路徑,因此您可能需要檢查文件路徑。

您可能需要更改腳本以使用絕對路徑而不是相對路徑,因為../在當前頁面和加載的頁面上可能不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM