2012-03-22 11 views
2

load()関数を使用してページをロードしようとしていますが、ロード時にそのページのjavascriptコードが実行されています。私はこれを使用します:jQueryを使用したajaxロードページでのスクリプト実行の防止

$('#itemid').load('thepage.php #selector', function() { 
    MY CODE HERE 
}); 

JavaScriptコードが実行されないようにするにはどうしたらいいですか?

答えて

3

.get()または.post()を使用して、返品を処理します。あなたは、それをページに追加する前に、返されたコードのうち、スクリプトタグを引き、またはちょうどあなたが望むコード引き出す:

$.post('thepage.php', { 
    data: myData 
}, function(data) { 
    var myHTML = $(data).not('script'); 
    $('#itemid').html(myHTML); 
}); 

または:

$.post('thepage.php', { 
    data: myData 
}, function(data) { 
    var myHTML = $(data).filter('#selector'); 
    $('#itemid').html(myHTML); 
}); 

デモ:http://jsfiddle.net/jtbowden/wpNBM/

を注:前述したように、ロードでセレクタを使用すると、例のように同じ結果が得られます。だから、もしこのように動作していなければ、何か他のことが起こっている。

+0

私はこれがまさに私が必要とするものだと思います。今すぐ試して結果を報告します。私はjQueryを正確に使っているわけではないことを忘れていましたが、私はZeptoスクリプトを使用しています。私はバグだと思っているので、ロードされたページからセレクタを使用せずにスクリプトが実行されていることを読み込んだload()関数のjQueryドキュメントを読んでしまうのですが、Zeptoでは動作しませんその通り – FidoBoy

+0

はい、私のjsfiddleの例のように、セレクタが動作するはずです。私はZeptoに慣れていませんが、シンタックスは同じですが、すべての機能が同じであることが保証されているわけではありません。 –

+0

Zeptoのドキュメントから:「jQueryのすべての機能のエミュレーションはプロジェクトの目標ではありません。彼らは、小さな図書館であることに最も関心があります。つまり、それを達成するためにいくつかの機能を放棄します。 –

0

私が問題を正しく理解しているかどうかはわかりませんが、javascriptを削除してhtmlを作成することはできますか。私はあなたが新しいページで起こるようにバインドすることを望んでいると仮定します。したがって、コールバックで新しいページを読み込むと、必要なバインディングを適用する関数を呼び出すことができます。

function applyAfterAjax(){ 
    $(this).find('element').click(function(){alert('clicked');}); 
} 
$('#itemid').load('thepage.php #selector',applyAfterAjax); 
関連する問題