0

このコードを使用して、外部htmlファイルをメインindex.phpファイルにロードしています。

$(document).ready(function(){
    $(".fld").click(function(){
        $("#collection").load($(this).attr("name"));
    });
});

コードはこのhtmlファイルからデータを取得します。これ
<a class="fld" name="external.html" href="#">Folder 1</a>

がexternal.htmlファイルです。
<a class="song" href="#" name="http://impk.co.in/sound/sound1.mp3">Song1</a>

external.htmlそのファイルをindex.phpjquery関数にロードした後、そのexternal.htmlファイルに対してのみ機能しなくなりました。残りのjquery関数はまだ機能しています。

これはウェブサイトへのデモリンクです

4

2 に答える 2

2

イベント委任の問題のようです。などで最初に要素にバインドすると.click、イベントはすぐに既存の要素にバインドされます。要素が DOM に存在しない場合、イベントはそれにバインドされません。その要素が後で追加された場合 (たとえば、Ajax を介して)、自動的にバインドされることはありません。

存在する要素 ( までdocument) にバインドし、次のように一致する必要があるセレクターを指定することで委任できます。

$("#collection").on('click', '.song', function () { ...

2 番目の引数に注意してください。

于 2012-12-08T18:59:26.490 に答える
0

jQuery の load() 関数は、いくつかの理由でイベント バインディングをコピーしません。現在の DOM へのターゲット要素の追加のみを処理します。それらを再バインドするか、on() を使用する必要があります。

于 2012-12-08T18:59:57.130 に答える