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. SVG要素のイベント委譲
- 3. ajaxリクエストでイベントを委譲する方法
- 4. modalViewControllerはコールバックを委譲します - HowTo?
- 5. 委譲パターン用UML
- 6. Websphereクラスローダー委譲モード
- 7. 継承の代わりに委譲を使用する場合
- 8. シンプルクロックアプリケーション:毎秒委譲またはコールバックを使用しますか?
- 9. pythonサブプロセスの入力委譲
- 10. textStorageDidProcessEditing通知をどのように委譲しますか?
- 11. クラスメソッドをどのように委譲しますか?
- 12. どのJavaScriptライブラリにイベント委任がありますか?
- 13. 変数idを動的に委譲し、多くの変数 "id"をjQueryの関数でggetherに委譲できますか?
- 14. MooToolsイベント委譲:コールバック内で子要素を参照する方法HTMLのこの部分を持つ
- 15. 関数を委譲する2つの関数を与える方法
- 16. WPF/SL - ICommandの派生または委譲からExecute/CanExecuteへの委任
- 17. jQueryでHammer.jsイベントを委任する
- 18. backbone.jsバインドされたイベントがビューに委譲されていません
- 19. C#で暗黙的な委譲の推論を回避または検出する方法はありますか?
- 20. Markdown解析をクライアント側に委譲する際の弱点は何ですか?
- 21. ボタンにaddEventListenerとネストされた要素を持つイベント委譲パターン
- 22. C++モデルでObjective-C++コントローラに委譲メソッドを通知する
- 23. jQueryに委譲された要素にアクセスするにはどうすればよいですか?
- 24. orientationchangeイベント後にサイズ変更イベントの発生を保証する方法はありますか(jQuery Mobile、JavaScript)?
- 25. iAd:Ad foundイベントをキャッチする方法はありますか?
- 26. ツールヒントがMouseEnterイベントをトリガーする方法はありますか?
- 27. イベントのデリゲートを取得する方法はありますか
- 28. ポップアップマネージャークラスのイベントをリッスンする方法はありますか?
- 29. Googleマップでイベントをシミュレートする方法はありますか?
- 30. WPFのListViewから「ドラッグ」を検出し、ViewModelに委譲します
を使用すると、イベントハンドラは、最初のクリックに完全にアンバインドしたいですか?または、クリックされた要素のバインドを解除するだけですか? –
クリックされた要素のみをアンバインドします。 – Puigcerber