用jquery抓住标题

时间:2012-03-28 14:56:56

标签: javascript jquery

我点击时试图抓住<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 = '';
});
});

6 个答案:

答案 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("");
});