delegateclickの場合はoneとします。それを行うことが可能かどうか誰にも分かりますか?イベントをjQueryに委譲する方法はありますか?
答えて
最初のクリックで完全にアンバインドするのではなく、PERの一致した要素を1回だけ発生させたいとします。
私はそうのようにそれを実装したい:
$('#container').delegate('.children', 'click', function() {
if($(this).data('clicked')) {
return;
}
// ... your code here ...
$(this).data('clicked', true);
});
これは一度だけの要素ごとに発生します。技術的には、毎回起動しますが、コードが最初にクリックされるとフラグが立てられ、コードは再び実行されません。
.one()ハンドラをシミュレートする際の固有の問題は、セレクタで一致した各要素が.one()を使用することによって、独自のイベントハンドラにバインドされることです。したがって、初めて起動すると、その要素からハンドラをアンバインド/削除します。一致するすべての要素に対してSINGLEハンドラだけが使用されているため、.delegate()でこれを行うことはできません。
上記のコードは完全にシミュレートしていますが、それは文字通り.one()が(イベントハンドラのバインドを解除して)同じことをしないので、ややこしいことです。
ありがとうございます、これは完璧に動作します。 – Puigcerber
私はそれを行うためのきちんとした方法があることを確認んだけど、それを行うための簡単な方法は、このようなものになるだろう:I以下のコメントのおかげで使用することを決めた:
<script>
$(document).ready(function(){
$("#container").delegate('.clickers', 'click', function(){
if($(this).data("clicked")==null){
$(this).data("clicked", "true");
$("#container").append($(this).html());
}
});
});
</script>
<div class="clickers" clicked="false"></div>
<div class="clickers" clicked="false"></div>
EDITこれで、w3c標準のDOMを一掃することはできません。
.attr()の代わりに.data()を使用して、 'clicked'フラグを保持することを考えてください。 –
これはW3Cの妥当性検査をねじ込みます – genesis
この投稿は数年前のものですから、もっと現代的な読者(2015年)の完全な最新の例を提供したかっただけです。ロジックは、ここで他の回答と違いはありませんが、jQueryの方法は具体的に、2011年以来、進化している:jQueryの1.7、.delegate(のよう
を).on()メソッドに取って代わられています。 jQuery delegate()
// define output element
var $output = $('div#output');
// attach delegated click handler
$(document).on('click', 'button', function() {
// define clicked element
var $this=$(this);
// if this element has already been clicked, abort
if ($this.data('clicked')) {
return false;
}
// perform click actions
$output.append("clicked " + $this.html() + "<br />");
// mark this element as clicked
$this.data('clicked',true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>One</button>
<button>Two</button>
<button>Three</button>
<div id="output"></div>
- 1. ActionScript 3にはイベント委譲システムがありますか?
- 2. イベントを委譲するパターン
- 3. typescriptのindexプロパティを委譲する方法はありますか?
- 4. ajaxリクエストでイベントを委譲する方法
- 5. SVG要素のイベント委譲
- 6. jQueryで多数のイベント委譲を使用する方が良いですか?
- 7. Vuexオブジェクトフォーム:子コンポーネントへのイベント委譲
- 8. 静的コンテンツのjqueryイベント委譲が機能しない
- 9. modalViewControllerはコールバックを委譲します - HowTo?
- 10. "if"を文書に委譲する
- 11. Websphereクラスローダー委譲モード
- 12. 委譲パターン用UML
- 13. オーバーライド内からクラス委譲を使用するときに委譲された関数を呼び出す
- 14. シンプルクロックアプリケーション:毎秒委譲またはコールバックを使用しますか?
- 15. 継承の代わりに委譲を使用する場合
- 16. 変更に際して要素を委譲する最も良い方法は?
- 17. OutputStreamWriterに委譲するもののリソースクローズを安全に処理する必要がありますか?
- 18. どのJavaScriptライブラリにイベント委任がありますか?
- 19. 通知を送信したり、コールバックを.cファイルから迅速なクラスに委譲する方法は?
- 20. textStorageDidProcessEditing通知をどのように委譲しますか?
- 21. クラスメソッドをどのように委譲しますか?
- 22. 要素の委任されたイベントを選択的にアンバインドする方法はありますか?
- 23. 変数idを動的に委譲し、多くの変数 "id"をjQueryの関数でggetherに委譲できますか?
- 24. pythonサブプロセスの入力委譲
- 25. jQueryでHammer.jsイベントを委任する
- 26. __getattr__を使用してメソッドに属性を委譲する方法?
- 27. MooToolsイベント委譲:コールバック内で子要素を参照する方法HTMLのこの部分を持つ
- 28. WPF/SL - ICommandの派生または委譲からExecute/CanExecuteへの委任
- 29. 関数を委譲する2つの関数を与える方法
- 30. @Superでbytebuddyのプライベートメソッドを委譲できますか?
を使用すると、イベントハンドラは、最初のクリックに完全にアンバインドしたいですか?または、クリックされた要素のバインドを解除するだけですか? –
クリックされた要素のみをアンバインドします。 – Puigcerber