2014-02-03 8 views
1

Ниже приводится выдержка из моего зренияОбъект не поддерживает свойство или метод «Attr»

<ul id="ScreenNav"> 
    <li id="1" class="Active"> One </li> 
    <li id="2"> Two </li> 
    <li id="3"> Three </li> 
</ul> 

У меня есть несколько сценариев, которые выполняют вызов Ajax на основе списка элементов, выбранных.

$('#ScreenNav').on('click', 'li', function() { 
    $(this).siblings().removeClass('active'); 
    $(this).addClass('active'); 
    var index = $(this).attr('id'); 

    //ajax call to a controller action 
}); 

Как-то Аякс вызов действия контроллера происходит в то время как операторы до этого не имеют никакого эффекта. Во время отладки я обнаружил, что заявление $('this').attr('id') вызывает ошибку: «Объект не поддерживает свойство или метод attr».

Я пробовал играть, но сталкиваюсь с тем же вопросом. http://jsfiddle.net/29KR9/1/. Возможно, $('this') не определен? В этом случае, как происходит вызов ajax, как ожидалось? Что не так с кодом?

EDIT: Приношу свои извинения! Скрипка работает так, как ожидалось. Как отметил @Anton, я не включил jQuery. Однако я до сих пор не понимаю, почему мое добавление и удаление класса не работает. Разница между скриптом и моим кодом заключается в том, что в моем коде скрипты привязаны к элементам списка, которые являются динамическими html.

+3

Вам нужно включить JQuery для скрипки http://jsfiddle.net/29KR9/1/ – Anton

+2

это может быть 'вар индекс = this.id;' –

+0

выглядит тонкой Http: // jsfiddle. net/arunpjohny/Nk955/1/ –

ответ

0

используйте этот код в $ (document) .ready(); как этот

$(document).ready(function() { 
     $('#ScreenNav').on('click', 'li', function() {   
      $(this).siblings().removeClass('active'); 
      $(this).addClass('active'); 

     }); 
}); 
+0

сценарии вызывается внутри $ (document) .ready() – user3266086

+1

, тогда plz добавляет ссылку на файл jquery на вашей странице. Загрузите файл jquery и добавьте референдум на свою страницу следующим образом.

Смежные вопросы