我点击时试图抓住<li>
上的“标题”。它一直未定义返回。
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 = '';
});
});
答案 0 :(得分:2)
这不起作用?
$('li').click(function(){
alert($(this).attr('title'));
});
答案 1 :(得分:1)
“这个”可能不是李。或者浏览器有bug(IE?)。你的代码对我来说似乎是对的。
答案 2 :(得分:1)
您应该在点击的li
元素上创建一个闭包。您在点击处理函数中的另一个函数中得到this
,因此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
});
});
答案 3 :(得分:0)
$("li").on('click',function () {alert($(this).attr('title');)});
答案 4 :(得分:0)
如何在li
元素上附加点击处理程序?您确定处理程序中的this
是否正在使用li
元素。
我会尝试记录this
并找出它指向的内容。
如果this
指向li
,那么$(this).attr('title')
应该可以正常运作。
答案 5 :(得分:0)
我猜它会是:
$("li.clickMe").click(function () {
$("this").attr("title").whateverYouNeedToDo("");
});