jQuery .hasClass и динамически добавленные классы - PullRequest
3 голосов
/ 26 июля 2011

Я использую библиотеку пользовательских полос прокрутки для jQuery, которая называется JS Scrollpane, однако она дает неожиданные результаты при попытке применить скроллер к DIV, в котором уже есть скроллер.Итак, я хочу проверить, был ли применен класс ".jspScrollable" и, если это так, не применять скроллер.Достаточно просто, верно?

Класс ".jspScrollable" динамически добавляется сценарием, и кажется, что метод hasClass в jQuery является статическим, а не динамическим, поэтому он не видит, что был добавлен новый класс,Есть ли способ проверить, был ли динамический класс добавлен к элементу?

Не обращайте внимания на строки pageEls.bigcol.Это всего лишь небольшой объект, в котором я храню все свои селекторы для оптимизации моего кода, поскольку на сайте в настоящее время имеется около 4000 строк JS или около того.

Пока мой код:

function initScrollers()
{
    pageEls.bigcol = $(".bigcol").filter(':visible');

    var settings = {
        animateScroll: true,
        autoReinitialise: true,
        hideFocus: true,
        verticalGutter: 15
    };

    if ( pageEls.bigcol.length && !pageEls.bigcol.hasClass('noScroller') ) 
    {
        if ( !pageEls.bigcol.hasClass('.jspScrollable') )
        {
            if (pageEls.bigcol.height() > 290)
            {
                pageEls.bigcol.jScrollPane(settings);
            }
        }
    }
}

Ответы [ 3 ]

6 голосов
/ 26 июля 2011

Вам не нужен . в аргументе метода hasClass.

Изменение:

 if ( !pageEls.bigcol.hasClass('.jspScrollable') )

до

 if ( !pageEls.bigcol.hasClass('jspScrollable') )
2 голосов
/ 26 июля 2011

Возьми.от имени класса в вашем hasClass() аргументе.Это должно быть просто:

 if ( !pageEls.bigcol.hasClass('jspScrollable') )

Работает здесь в jsFiddle: http://jsfiddle.net/jfriend00/TsfQ6/

$("#test").addClass("testClass");
alert($("#test").hasClass("testClass"));   // alerts true

Между прочим, вы можете свернуть свой трижды вложенный оператор if в этом:*

1 голос
/ 26 июля 2011

Вам не нужна точка в hasClass.Попробуйте это:

!pageEls.bigcol.hasClass('jspScrollable')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...