2012-03-28 5 views
0

Im пытается захватить «заголовок» на <li>, когда он щелкнут. Он продолжает возвращаться не определен.grabbing title with jquery

HTML

<div id="sidebar"> 
     <div class="navigation"> 
    <ul> 

    <li title="../../000_Movies/_assets/playlist.html">فیلم ها</li> 

    </ul> 
</div> 
</div> 

JS

$('.navigation li').click(function() { 
$('.slider').animate({ 
    marginLeft: 0 
}, 500,function() { 
var test = $(this).attr('title'); 
alert(test); 
    location.href = ''; 
}); 
}); 
+2

Попробуйте '.prop (" title ")' in вместо '.attr (« title »)', но я думаю, что он все равно должен работать ... – Pointy

+0

Вы уверены, что «это» на самом деле является элементом «li»? Возможно, попробуйте запустить консоль? –

+0

Можете ли вы показать нам контекст '$ (this)'? –

ответ

2

Это не работает?

$('li').click(function(){ 
    alert($(this).attr('title')); 
}); 
1

"это" может быть, не ли. Или у браузера есть ошибка (IE?). Ваш код мне кажется правильным.

+0

его делает это в FF и хром – Blainer

0
$("li").on('click',function() {alert($(this).attr('title');)}); 
0

Как вы крепление обработчика щелчка на li элементе? Вы уверены, что this внутри обработчика находится в позиции li элемент.

Я попытался бы зарегистрировать this и узнать, на что он указывает.

Если this указывает на li, то $(this).attr('title') должен работать отлично.

1

Вы должны создать укупорочное средство на нажатом элементе li. Вы получаете внутри другой функции в функции обработчика кликов, поэтому определение this будет отличаться от исходной функции.

$('.navigation li').click(function() { 
    // cache the element here 
    var that = $(this); 

    $('.slider').animate({ 
     marginLeft: 0 
    }, 500, function() { 

     // then access that instead here 
     // (we're creating a closure on the that variable) 
     var test = that.attr('title'); 
     alert(test); 
     location.href = ''; 
    }); 
}); 

Если у вас есть две вложенные функции, их this переменные будут отличаться:

function foo() { 
    // this here ... 
    function bar() { 
     // ... is different from this here 
    } 
} 

Так что строительство на ...

$('li').click(function() { 
    // $(this) here ... 
    $('something').slider({},100, function() { 
     // ... is different from $(this) here 

    }); 
}); 
0

Я предполагаю, что это будет:

$("li.clickMe").click(function() { 
    $("this").attr("title").whateverYouNeedToDo(""); 
}); 
Смежные вопросы