href 总是“未定义”的。

4
每当我在警报上时,始终会收到未定义的结果...为什么呢?
<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>

$(this) 不是锚点 (a),而是列表项 (li) 吗?如果是的话,“href”不是 li 的属性。 - lance
8个回答

9
你需要选择 a 标签。
var path = $('a', this).attr("href"); 

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
您正在查看列表项(li)的href。请将您的代码更改为以下内容:
$("#menu ul li a").click(function() { 

2
因为你是在LI元素上分配了点击处理程序,而不是在A元素上。
这是正确的:
$("#menu a")

2

您正在尝试获取 li 元素的 href 属性。您可能要查找的是 a 元素上的 href 属性。请改用以下选择器:

$("#menu ul li a")

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

2

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

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

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;
    });
});

1

你漏掉了一个标签。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接