Как получить число из динамического имени класса из списка классов, используя jquery - PullRequest
1 голос
/ 10 февраля 2011

Моя ситуация такова: У меня есть элемент списка 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 голосов
/ 10 февраля 2011
var regEx = /display-[\d]+/;
var currentObj = regEx.exec($(this).closest('.display-container').attr('class'))[0].split('-')[1];
0 голосов
/ 10 февраля 2011

Это работает:

var currentObj = /display-([0-9]+)/.exec(
                     $(this).closest('.display-container').attr('class')
                 )[1];
0 голосов
/ 10 февраля 2011

Может быть:

$('.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 ) );
});

[не тестировалось]

0 голосов
/ 10 февраля 2011

мое понимание вашей настройки 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];
}

теперь у вас есть отображение - ## в указанной выше переменной.

...