2012-04-30 12 views
4

さて、私はこれについて数時間前から答えを探していましたが、JQuery .on()変更イベントが発生しない(ページが.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を単独で開かない限り、変更関数は決して起動しません。

+0

クリックハンドラを登録しているとき、または後でそのページにロードするときに、 '$( '#mybutton')'はあなたのボタンを含んでいますか?どのバージョンのjQueryを使用していますか? – StuperUser

+0

internalpage.jsはクライアントに書き込まれていますか? – Sunny

+0

JSが内側のページの中にどのように埋め込まれているかを教えてください。 – Alnitak

答えて

2

はあなたのメインのJavaScriptで、代わりにあなたの含まれるページでごmyinnerpage.jsコードを入れることはできますか?

もし私が "良い解決策"ではなかったのですが、これはあなたを助けることができます:jQueryMobile-Navigationはajaxでページを読み込んだときと同じ問題を抱えていました。それを解決する。彼らの$ .ajax->の成功で、彼らは、innerHTMLプロパティを使用します。

[...] 

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

[...] 

あなたは彼らの完全なコードhereを見ることができます。

スクリプトタグおよびページ区切りに含まれるインラインJavaScriptので動作します。

+0

myinnerpage.jsコードをhome.htmlページに追加しました。これで問題は解決しました。私はそれをする必要がない方法を好むだろうが、これは今のところうまくいく。ありがとう – Dave

1

イベントを手動で試してみますか?

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

イベントは 'document'に「束縛」されているかもしれませんが、入力に委譲されています。これは動作しません。それは '$( 'input = name = rbfileByNameOrID:radio')でなければなりません。trigger( 'change');'私は彼が '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>タグも実行されますが、現在のページのパスから来るので、ファイルパスを確認する必要があります。

../が現在のページとロードされたページで同じではない可能性があるため、相対パスではなく絶対パスを使用するようにスクリプトを変更する必要があります。

関連する問題