如何使用jquery从类列表中获取动态类名中的数字

时间:2011-02-10 14:39:49

标签: jquery regex jquery-plugins dynamic

我的情况是这样的: 我有一个HTML列表元素,其中包含未知数量的类(必须是动态的),我在这个类列表中添加了两个类。单击隐藏在其中的链接后,我需要能够从我添加到其中的一个类中动态获取一个数字。

我添加到列表中的类是'display-container'和'display-#'(#表示我需要的数字)。

以下是我目前的解决方案,但必须有更好的方法来获得这个数字。任何帮助将不胜感激。

$.each($(this).closest('.display-container').attr('class').split(' '), function(i, item) { if(this.match('^display-[0-9]+')) { currentObj = item.split('-')[1]; } } )

我正在处理的代码将进入插件(这就是我需要动态类列表的原因)。下面给出了一个示例列表元素。

                    <loop query="itemList">
                    <li class="item-#currentRow#">
                        <table>
                            <tr>
                                <td class="vat">
                CONTENT
                                </td>
                                <td class="vat">
                CONTENT
                                </td>
                                <td class="vat">
                CONTENT
                                </td>
                                <td class="vat">
                                    <span><a href="javascript://" class="edit" id="edit-#id#">Edit</a></span>
                                    <span><a href="javascript://" class="delete" id="delete-#ID#">Delete</a></span>
                                </td>
                            </tr>
                        </table>
                    </li>
                    </loop>
                </ul>`

4 个答案:

答案 0 :(得分:0)

我对你的html设置的理解

canned my html, using yours.

使用Javascript:

var regEx = /display-[\d]+/;
var classesLongString = $(this).closest('li').attr('class');
var yourDisplayNumberClass = regEx.exec(classesLongString );
var currentObj = 0;
if(yourDisplayNumberClass){
   currentObj = yourDisplayNumberClass.split('-')[1];
}

你现在在上面的变量中显示了##。

答案 1 :(得分:0)

这有效:

var currentObj = /display-([0-9]+)/.exec(
                     $(this).closest('.display-container').attr('class')
                 )[1];

答案 2 :(得分:0)

也许:

$('.display-container a').live('click',function(){
    var $cont = $(this).parents('.display-container');
    var rgx = new RegExp( "display\-(\d+)" );
    var cls   = rgx.exec( $cont.attr('class') );
    $cont.toggleClass( cls[0] , cls[0].replace( cls[1],cls[1]+1 ) );
});

[未经测试]

答案 3 :(得分:0)

var regEx = /display-[\d]+/;
var currentObj = regEx.exec($(this).closest('.display-container').attr('class'))[0].split('-')[1];