получить значение атрибута данных на основе активного класса

я хочу получить значение атрибута данных data-itemtype на основе
ul > li class = "activeTab"

вот мой код.

<ul class="tabs">
    <li data-itemtype="1" class="activeTab"><a href="#tab1">Published</a></li>
    <li data-itemtype="0" class=""><a href="#tab2">Unpublished</a></li>
</ul>

если class="activeTab" находится в первом элементе <li>, тогда извлеките атрибут данных первого элемента li, т.е. 1 в этом случае, и, следовательно, то же самое относится ко второму или любому количеству элементов li.

я пробовал это

var itemType = $('ul.tabs').find('li.activeTab').attr('data-itemtype');

и это не работает. он показывает значение undefined.

Обновление:

я использую вкладки. я хочу знать, какая вкладка в данный момент активна, и мне нужно это значение в переменной javascript.

вот мой HTML-код.

<div class="widget">
    <ul class="tabs">
        <li data-itemtype="1"><a href="#tab1">Published</a></li>
        <li data-itemtype="0"><a href="#tab2">Unpublished</a></li>
    </ul>
    <div class="tab_container">
        <div id="tab1" class="tab_content">
            <div class="widget" style="margin-top:0px;">
                <div class="title"><img src="/images/icons/dark/cart3.png" alt="" class="titleIcon" /><h6>Published Items</h6></div>                          
                <p>Content</p>
            </div>
        </div>
        <div id="tab2" class="tab_content"> 
            <div class="widget" style="margin-top:0px;">
                <div class="title"><img src="/images/icons/dark/cart3.png" alt="" class="titleIcon" /><h6>Unpublished Items</h6></div>
                <p>Content</p>
            </div>
        </div>
    </div>  
    <div class="clear"></div>        
</div>

используется jQuery.

$.fn.contentTabs = function(){ 

        $(this).find(".tab_content").hide(); //Hide all content
        $(this).find("ul.tabs li:first").addClass("activeTab").show(); //Activate first tab
        $(this).find(".tab_content:first").show(); //Show first tab content

        $("ul.tabs li").click(function() {
            $(this).parent().parent().find("ul.tabs li").removeClass("activeTab"); //Remove any "active" class
            $(this).addClass("activeTab"); //Add "active" class to selected tab
            $(this).parent().parent().find(".tab_content").hide(); //Hide all tab content
            var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content
            $(activeTab).show(); //Fade in the active content
            return false;
        });

    };
    $("div[class^='widget']").contentTabs(); //Run function on any div with class name of "Content Tabs"

приведенный выше код не работает для меня.


person Ibrahim Azhar Armar    schedule 20.04.2012    source источник
comment
Да, это так.   -  person David says reinstate Monica    schedule 20.04.2012
comment
@ Дэвид Томас не уверен, но у меня это не работает. я обновил свой вопрос с некоторыми подробностями.   -  person Ibrahim Azhar Armar    schedule 20.04.2012
comment
Тем не менее, работает ли демонстрация JS Fiddle, на которую я ссылался, для вас?   -  person David says reinstate Monica    schedule 20.04.2012
comment
нет там написано Uncaught SyntaxError: Unexpected token ILLEGAL   -  person Ibrahim Azhar Armar    schedule 20.04.2012
comment
@IbrahimAzharArmar какой браузер ты используешь?   -  person Naftali aka Neal    schedule 20.04.2012
comment
Я не знаю, откуда вы хотели получить атрибут, поэтому я добавил обработчик click в демонстрационную версию I. сделано из того, что вы опубликовали. И опять же, это похоже работает. (Хром 18/Win XP)   -  person David says reinstate Monica    schedule 20.04.2012
comment
он работает внутри обработчика кликов. я пробовал снаружи. во всяком случае, я хочу использовать его внутри обработчика кликов. благодарю вас. теперь работает :)   -  person Ibrahim Azhar Armar    schedule 20.04.2012


Ответы (1)


Кажется, работает нормально.

Вместо этого я бы использовал .data(...):

var itemType = $('ul.tabs').find('li.activeTab').data('itemtype');
alert(itemType);

Скрипт: http://jsfiddle.net/maniator/2GYxh/

person Naftali aka Neal    schedule 20.04.2012
comment
@IbrahimAzharArmar, не могли бы вы показать, точно что вы делали? - person Naftali aka Neal; 20.04.2012
comment
я не знаю почему. но он работает внутри обработчика кликов. и если я размещу код снаружи, он не сработает, не знаю почему. - person Ibrahim Azhar Armar; 20.04.2012