0

ページ上のいくつかのHTML要素にonclickイベントを動的に追加したいと思います。IDを手元に持たず、HTML要素に共通点がないことを知って、これらの要素を検索して見つけるための最良の方法は何ですか。

これを行う方法は、CSSクラス('add-onclick')をすべての要素に追加し、ドキュメントを反復処理し、各HTMLタグ'elem'に対して次のチェックを実行することです:(elem.className.indexOf(' add-onclick ')!= -1)

私がこれに見ることができる唯一の欠点は、私がスタイリング以外の何かのためにCSSクラスを使用しているということです。これは完全に違法ですか、他にどのようなオプションがありますか?

XHTML 1.0 Transitionalを使用していますが、HTML5はオプションではありません。

どうもありがとうジハード

4

3 に答える 3

1

クラスにプレフィックスを付けることができます。つまり、jQueryclick_redbgまたはclick_bluebgPrototypeで正規表現を使用します。

$("div[class^='click_']").each(function(e) { ... });
于 2012-10-24T10:17:23.003 に答える
0

「委任」を特徴とする多くのJavascriptフレームワークがありますが、ほとんどはhtml5機能を必要としません(通常のECMAスクリプト以降)。

委任は基本的に、イベントがスローされたよりも高いレベルでDOMイベントをキャッチします(DOMイベントは、最下部の要素に到達するまでDOMをバブルダウンし、次に再びアップして、ルートで渡された要素についてすべてのイベントハンドラーに通知します)

フレームワークを使用せずにそれらを実装する場合は、たとえば、クリックイベントをドキュメント本文に追加できます。「最下部の要素」はイベントのデータに保存されるため、このイベントはページ上のすべてのクリックを取得します。その要素のcssルールを設定し、委任の実装に委任できます。

于 2012-10-24T10:15:37.440 に答える
0

最善の方法は、コンテキストと基準によって異なります。

目的のためにクラスを使用することに何の問題もありません。クラスはマークアップ言語の概念であり、「CSSクラス」はなく、CSSでクラスセレクターを使用するだけであり、クラスをスタイル設定にのみ使用する必要はありません。

もちろん、ドキュメントツリーをトラバースして各要素のクラスをチェックすることは可能です。ただし、これはjQueryが適している可能性があります。jQuerymを使用すると$('.add-onclick').click(handleClick)、クラス内のすべての要素が同じイベントハンドラー関数を持つ必要がある場合に必要なのはステートメントだけhandleClickです。

于 2012-10-24T11:34:20.150 に答える