0

動的にロードされたアンカータグにイベントリスナーを割り当てようとしています。この機能は、テキストボックスの下にポップアップ表示される簡単な提案ボックスです。まず、キーアップリスナーを検索ボックスに割り当てます。

$('.question').keyup(function(e) {
    if (e.which != 13) {
        self.suggest($(this).val());
    }
});

次に、呼び出された関数、self.suggest

function suggest(text) {
    if (text.length > 0) {
        bkBtn.hide();
        waitImg.show();
        var d = document.createElement('div');
        d.className = 'suggest-box';
        var data = {}
        data.text = text;
        $.ajax({
            url: BASE_URL + '/urm8/suggest',
            type: 'POST',
            data: data,
            cache: false,
            success: function(markup) {
                waitImg.hide();
                if (markup.indexOf('##none##') != -1 || markup.length == 0) {
                    $(d).hide();
                }
                else {

                    $(d).append(markup);
                    $('.content').append(d);
                }
            },
            error: function(e) {
                waitImg.hide();
                alert('error');
                $('.content').html('');
                $('.content').append(e.responseText);
            }
        })   
    }
}

.suggest-linkドキュメントの読み込み時にこの関数をセレクターに割り当てます。

$('.suggest-link').live('click', function(e) {
    var answerID = $(this).attr('id');
    alert(id)
    self.updateBackStack();

    $(document).find('.suggest-box').remove();
    $('.content').blindRightToggle('fast', undefined, function() {
        self.appendAnswer(false, answerID);
    }); 
});

alertここには解雇はありません。この方法でイベントリスナーをアタッチする方法がわかりません。少し助けていただければ幸いです。

また、10分前の時点で最新の安定したjQueryを使用しています。

4

1 に答える 1

2

'live'の代わりに'on'を使用し、イベント処理を親要素に委任します。例:

$('#parent').on("click", "#child", function() {});

参照:

ダイナミックHTMLのロード後にクリックイベントを追加するためのjQuery.live()と.on()メソッド

于 2012-12-03T22:06:21.170 に答える