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元素,那么 usingclosest是不正确的,因为它已经遍历了 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-属性

但正如其他人所建议的那样,如果您使用数据属性来获取数据会更好,如下所示:

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

在这种情况下,两个与 portlet 相关的类都作为数据属性提供,您可以使用以下方法轻松访问:

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

最后两个是使用连字符名称访问相同数据属性的变体。

于 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

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 回答
0

你也可以像这样做一个正则表达式:

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