2012-04-30 82 views
4

好了,所以我一直在尋找這個答案了幾個小時了,並沒有發現任何的作品。JQuery的。對()更改事件不觸發(頁面是.load()內)

我有一個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

是否'$(「#爲myButton」)'包含當你註冊單擊處理或者它加載到頁面後您的按鈕?你使用的是哪個版本的jQuery? – StuperUser

+0

是否將innerpage.js寫入客戶端? – Sunny

+0

可以請你說明JS是如何嵌入內頁的?的 – Alnitak

回答

2

你能在你的網頁包含把你myinnerpage.js代碼在你的主要的Javascript,而不是?

如果你不能,我沒有「好的解決方案」,但這可以幫助你:jQueryMobile導航有同樣的問題,當他們加載頁面的Ajax,他們使用非jquery解決方案解決。在他們的$ .ajax->的成功,他們使用innerHTML:

[...] 

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

[...] 

你可以看到他們全碼here

它與腳本標記和內聯-javascript包括在頁面divs。

+0

我將myinnerpage.js代碼添加到home.html頁面,並解決了這個問題。我更喜歡一種我不需要那樣做的方式,但現在這種方法可行。謝謝 – Dave

1

嘗試手動觸發事件?

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

事件可能被「綁定」到「document」,但它被「委託」到輸入。這不起作用。它應該是'$(「輸入[名稱= rbfileByNameOrID]:無線電」)的觸發器(「變化」);'另外,我認爲他想了'change'事件綁定到該元素,所以當它應該會觸發。至。 –

+0

完全錯過了,對不起 –

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

OR:

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

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

我認爲他希望'change'事件觸發它應該。我認爲這裏的問題是事件沒有受到限制。 –

0

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

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