href总是“未定义”

时间:2011-05-31 14:22:48

标签: javascript jquery href

警告我总是未定义......为什么?

<script type="text/javascript">

$(document).ready(function(){
    $("#menu ul li").click(function() {
        var path = $(this).attr("href"); 
        alert (path);
        $.get(path, function(data) { $("#texte").html(data); });
        return false;
    });
});

</script>

</head>

<body>

<div id="wrapper">

<div id="menu">
  <ul>
    <li><a href="pulse/data/blocks/intro.html">Intro</a></li>
    <li><a href="pulse/data/blocks/presentation.html">presentation</a></li>
    <li><a href="pulse/data/blocks/pourquoi.html">pourquoi ?</a></li>
    <li><a href="pulse/data/blocks/forfaits.html">forfaits</a></li>
  </ul>
</div>

8 个答案:

答案 0 :(得分:9)

您需要选择a标记。

var path = $('a', this).attr("href"); 

答案 1 :(得分:2)

您需要选择元素:

$(document).ready(function(){
    $("#menu ul li").click(function() {
        var path = $(this).find("a").attr("href"); 
        alert (path);
        $.get(path, function(data) { $("#texte").html(data); });
        return false;
    });
});

答案 2 :(得分:2)

因为您在LI元素上分配了click-handler,而不是A元素。

这是正确的:

$("#menu a")

答案 3 :(得分:2)

您正在查看列表项href的{​​{1}}。将您的代码更改为以下内容:

li

答案 4 :(得分:2)

您正在尝试获取href元素的li属性。您可能正在寻找href元素上的a属性。请改用此选择器:

$("#menu ul li a")

也可以通过从选择器中删除ulli来减少它。

答案 5 :(得分:2)

问题是$(this)引用了<li>元素而不是它的链接。您可以使用以下选择器来解决此问题:

var path = $("a", $(this)).attr("href"); 

答案 6 :(得分:1)

你错过了一个标签。

$("#menu ul li a").click

答案 7 :(得分:1)

您的JQuery引用了错误的元素: 您需要引用UL LI A元素,而不是引用UL Li元素,如下所示:

$(document).ready(function(){
    $("#menu ul li **a**").click(function() {
        var path = $(this).attr("href"); 
        alert (path);
        $.get(path, function(data) { $("#texte").html(data); });
        return false;
    });
});