1

ここにあるようなタグ システムを作成しようとしていますが、データベースでタグが見つからない場合は、ユーザーが送信できるようにしたいと考えています。

I'm using chosen (here) and jquery. I have chosen working how I'd like it but I can't run my .click() event. Any ideas?

Thanks

<form>
<select multiple="multiple" id="jqtags" style="width:400px;height:30px !important;">
    <?php getTags(); ?>
</select>
<input type="submit" />
</form>

$(document).ready(function(){
    c.init.page();
});
$('form').submit( function() {
    var tags = $('#jqtags').val()
    return false;
});
$("#jqtags").chosen();

$('.no-results').click(function() {
    alert('123');
});

.no-results is generated by chosen and isn't there on page load if that helps anything

4

1 に答える 1

4

.no-results は選択によって生成され、ページの読み込みにはありません

それが問題だ。イベントをバインドしようとすると要素が DOM にないため、バインドされません。DOM ツリーの上位にイベントを委任できます。jQueryonメソッドを使用すると、セレクターを渡すことでこれを行うことができます。

.no-resultsが要素の子孫として追加された場合、次のformようにすることができます。

$("form").on("click", ".no-results", function() {
    alert('123');
});

これが機能するのは、DOM イベントが発生元の要素からツリーをバブルアップする傾向があるためです。イベント ハンドラーを祖先要素にバインドすると、バブリングがその要素に到達したときにキャプチャされます。このonメソッドは、起点がセレクターと一致するかどうかを確認し、一致する場合はイベント ハンドラーを実行します。

于 2012-05-30T10:20:28.050 に答える