0

JQuery に奇妙な問題があります。JQuery UI のオートコンプリートを使用して提案を表示し、選択した各テキスト値を div に追加するテキスト フィールドを使用しようとしています。各テキスト ラベルに加えて、削除リンクもありますが、機能しません。

オートコンプリートは魔法のように機能します:

 $( "#games" ).autocomplete({
                source: "<?php echo base_url('game/game/autocomplete'); ?>",
                dataType: "json",
                type: "POST",
                minLength: 1, // how many character when typing to display auto complete
                // handling the select
                select: function( event, ui ) {
                  $('#showgames').append('<span id="'+ui.item.value+'">'+ui.item.value+'<a href=# class="removegame">Remove</span>');
                    $('#games').val('');
                    return false;
                }
            });
            // removing game items
            $('.removegame').click(function(){
                // The following never happens
                    alert("hi");
                });

  <div id="showgames">
       // anchor links are generated by jquery here, within individual spans.
       // these are not working
            </div>

            <div id="testing">
                // This works
                <a class=removegame href=#>Test link</a></span> 
            </div>

オートコンプリート フィールド: ( ゲーム )

            <td align="left"><label for="genres">Genre(s):</label></td>

showgames div には、「games」テキスト フィールドから取得した各値に対応する各スパンがあります。ここで、remove game のリンクをクリックしても何も起こりません。実際には上記のように関数に入り、アラートを表示するはずですが、決して起こりません。

反対に、クラス removegame を使用してページにアンカー タグ アイテムを作成すると、機能します。しかし、jQuery を使用して生成された場合は機能しません。私は夢中になっています。誰か助けてくれませんか?

事前にどうもありがとうございました!!

4

3 に答える 3

1

リンクは動的に作成されるため、削除機能がリンクに追加されているときは存在しません。代わりに、クリック イベントが発生したときに要素の removegame クラスをチェックするコードを作成することをお勧めします。

$("#showgames").on('click', '.removegame', function(){
    // Your code here
    console.log("hello");
});
于 2013-04-19T19:32:46.690 に答える
1

.onこの方法を使用する必要があります

$("#showgames").on('click','.removegame',function(){
        // The will happen now
        alert("hi");
});
于 2013-04-19T19:30:53.333 に答える
-1

選択関数内で、新しく追加されたリンクでイベントをフックする必要があります。基本的に、このコードを移動できます:

    // removing game items
    $('.removegame').click(function(){
        // The following never happens
            alert("hi");
        });

あなたのselect関数の中に。

于 2013-04-19T19:32:56.700 に答える