4

この質問に似たようなことをしようとしていますが、少し違うので、解決策がうまくいきません。

<span class="a-class another-class test-top-left"></span>

私は要素を持っています(このコードはaを示してspanいますが、それは何かかもしれませんdiv span)。この要素にはtest-(などtest-top-lefttest-top-right始まるクラスがあります。) で始まるクラスでクリック イベントをトリガーし、クリックさtest-れたオブジェクトを として保存しましたvar object = this;。ここまでは簡単なこと。

私が今やろうとしているのは、そのクラスの完全な名前を取得することです ( test-top-left)。私はそれがで始まることを知っていますがtest-、フルネームは何ですか. 問題は、他のクラスa-class another-classtest-top-left. hasClassクラスの完全な名前を取得するために使用できますか? find()orを使用したくないのはfilter()、その中に追加の要素がある可能性があるからですclass="test-"

編集:

私が今持っているコードはそうですが、それは私にすべてのクラスを与えます。必要なのは、 で始まる単一のクラスtest-です。

var object = this;
$(object).attr('class'); 

そのため、すべてのクラスを for ループし、各クラスを個別にテストします。これは、多くの不要なコードのように見えます。クリックされた正確なクラスをすぐに取得する賢い方法がjQueryにあることを願っています。

4

3 に答える 3

9

説明

jQuerys Attribute Contains Selector.attr()および.click()メソッドを使用できます。

Attribute Contains Selector - 指定された部分文字列を含む値を持つ指定された属性を持つ要素を選択します。

.attr() - 一致した要素のセットの最初の要素の属性の値を取得します。

.click() - イベント ハンドラーを「クリック」JavaScript イベントにバインドするか、要素でそのイベントをトリガーします。

サンプル

html

<span class="anyclass test-hello">Hello World</span>​

jQuery

$("[class*='test']").click(function() {
    var object = $(this);
    alert(object.attr("class").match(/(test-.*?)(?:\s+|$)/)[1])
;});

更新されたjsFiddleを確認してください

アップデート

正規表現を使用したくない場合は、これを行うことができます。

$("[class*='test']").click(function() {
    var object = $(this);
    alert("test-" + object.attr("class").split("test-")[1].split("-"))
;});

</p>

詳しくは

于 2012-05-22T19:34:15.450 に答える
3

これはあなたのために働くはずです:

var object = this;
var className = object.className.match(/(test-.*?)(?:\s+|$)/)[1];

クラス名は、探しているクラスの名前です。

于 2012-05-22T19:46:44.460 に答える
0

分割または正規表現を使用したくない場合は、別の属性でクラスを使用してみてください

<span class="someclass test-something" _rel="test-something">test<span> 

また

<span class="someclass" _rel="test-something">test<span>

スクリプトで

$("[_rel*='test-']").click(....

属性を取得するには、次を使用します$(this).attr("_rel")

于 2012-05-22T21:50:36.957 に答える