1

動的に作成されたがあり、イベントを発生さ<span class="remove-row">せることができません。click()JS ではまだ比較的グリーンなので、問題はセレクターにあると思います

すべてここ jsFiddleで見ることができます。
(JS ペインの一番下を参照)

生成されたhtml の外観を簡略化したバージョンを次に示します。

...
<section >
    <div class="look-like-input textfield droppable" restrict-children="1" id="">
        <span class="remove-row"><span>X</span></span>
    </div>
    <br />
    <div class="look-like-input textarea droppable" id="deprecated"></div>
</section>
...

そして、これは私がクリックイベントを取得しようとしている方法です:

...
$(".remove-row").click(function() {
    alert("Hello");
});
4

5 に答える 5

3

.clickページの準備ができたときにバインドされるため、アイテムが dom に追加されるときにバインドが発生するようにするために使用し.onます。機能し.liveますが、廃止されました。

$("#drop-zone").on('click', '.remove-row', function() {
    alert("Hello");
});

効率とスコープの制限のために、ドロップ ゾーン ID が追加されます。

http://jsfiddle.net/48nbs/22/

于 2013-01-15T19:42:05.823 に答える
1

以下の使用を検討してください。

jQuery(".remove-row").on("click", function () {alert('hello');});
于 2013-01-15T19:37:57.783 に答える
1

このように on() を使用してみてください:

$(".remove-row").on('click',function() {
    alert("Hello");
});

これにより、動的に作成された要素が処理されます。

live() も使用できますが、 live()非推奨です jQuery 1.7 の時点で -- http://api.jquery.com/live/

于 2013-01-15T19:39:18.427 に答える
1

同様の問題がありました。これは私のために働いた:

$(".remove-row").on("クリック", function () { alert('hello'); } );

または、Amd4632 が意図する .live バージョンも動作するはずです。

于 2013-01-15T19:39:46.510 に答える
0

リスナーを設定するコードが既に実行された後に、html を生成している可能性があります。その場合、動的に生成されたスパン要素にリスナーが接続されることはありません。

編集
実際、私はあなたのフィドルをチェックアウトしましたが、リスナーを設定するスクリプトコードがどこにもありません。ページが読み込まれたらコードを実行すると仮定しています。その場合、DOM 要素がまだ生成されていないと、リスナーはアタッチされません。

于 2013-01-15T19:37:43.920 に答える