0

私はdivこのようなタグを持っています:

<div id="some id here" class="portlet portlet_15 portlet_content_15 new" >some content here</div>

私は次のようにjqueryを使用してidこれを取得できることを理解しています:div

$(this).closest("div").attr("id")

portlet_15しかし、上記から任意の数を抽出するclassにはどうすれ15ばよいですか?

これは、私が現在どこで取得および送信しているのかを示すコードの抜粋idですdiv

$.ajax({
    url: 'some web service,
    type: 'POST',
    data: { strID:$(that).closest("div").attr("id"), strClass:"need to send the class value too right here, in this case it would be portlet_15" },
    error: function(xhr, status, error) {
        //some error message;
    },
    success: function() {
        //some success task
    }
});

data上記のコードのどこに行くべきかというメモを含めましたclass

4

4 に答える 4

1

this何を指しているのかわからないため、既存のコードは少し混乱します。特定のdiv要素を参照している場合、それclosestはすでにDOM階層をトラバースしているため、使用は正しくありません。

しかし、そうでなければ、特定の要素のすべてのCSSクラスを取得したい場合は、これを呼び出す必要があります。

$(this).attr("class").split(" ");
// in your case this would return an array of classes:
// ["portlet", "portlet_15", "portlet_content_15", "new"]

thisもちろん、問題の要素を指します。次に、個々のクラスを好きなように簡単に解析できます。数値を抽出する場合は、正規表現を使用する可能性があります。

/portlet_(\d+)/i;

data-属性を使用する

しかし、他の人が示唆しているように、次のようにdata-attributesを使用してデータを取得する場合は、データを取得する方がはるかに優れています。

<div id="some id here"
     class="portlet new"
     data-portlet="15"
     data-portlet-content="15">
         some content here
</div>

この場合、両方のポートレット関連クラスがデータ属性として提供され、以下を使用して簡単にアクセスできます。

$(this).data("portlet"); // would return 15
$(this).data("portletContent"); // would return 15
$(this).data("portlet-content"); // would return 15

最後の2つは、ハイフン付きの名前で同じデータ属性にアクセスするバリエーションです。

于 2012-06-20T09:36:25.530 に答える
1

これを試して:

var c = $('#here').attr("class").split(' ')[1];
var cls = c.substr(-2);

http://jsfiddle.net/caCPv/1/

于 2012-06-20T09:39:08.837 に答える
0

次のような正規表現を実行することもできます。

var found = $('#here').attr("class").match(/portlet_\d{1,3}/);
于 2012-06-20T09:44:09.933 に答える
0

正規表現を使用するMaibe:

var element = $(that).closest("div");
var strClass = element.attr("class").match(/portlet_\d+/i);

そしてあなたのajaxで:

data: { strID: element.attr("id"), strClass: strClass[0] },
于 2012-06-20T09:45:11.810 に答える