访问锚标记的路径名

时间:2011-03-28 18:25:00

标签: jquery

我可以在firebug中看到我的锚标记的路径名的值,但是我很难访问它

<script type="text/javascript">
      $(document).ready(function() {

          $("a").click(function() {
              alert("Hi");

              $.ajax({
                  type: "POST",
                  url: "NickTracker.asmx/LogActivity",
                  contentType: "application/json; charset=utf-8",
                  data: "{'path': '" + attr('pathname') + "'}",
                  dataType: "json",
                  success: AjaxSucceeded,
                  error: AjaxFailed
              });

          });

      });
      function AjaxSucceeded(result) {
          alert(result.d);
      }
      function AjaxFailed(result) {
          alert(result.status + ' ' + result.statusText);
      }  
  </script>  

这是我的HTML

<body>
    <form id="form1" runat="server">
    <div>
    Page 1<br />
        <br />
&nbsp;<a href="http://manual.aspdotnetstorefront.com/p-157-xml-packages.aspx">Manual</a>
    <br />
    <a href="http://www.google.com/">googles</a>
        <br />
        <br />
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
    </div>
    </form>
</body>

当用户点击我想要返回的路径时,这不起作用 - attr('pathname')

3 个答案:

答案 0 :(得分:5)

您需要引用this对象和正确的属性,因此请将attr('pathname')替换为$(this).attr('href'),或者更简单地this.href

this.pathname只能访问URL主机名后的任何值,如果您在站点上遍历根目录相关文件,则可以正常运行,但如果您尝试访问其他主机上的文件,则会中断。例如,对于href="http://www.google.com/finance"this.pathname只会产生/finance

答案 1 :(得分:0)

如果您的意思是href属性或甚至是名为pathname的属性,则需要修复您的attr调用。你目前所拥有的是一个名为attr的函数,并尝试将其传递给一个字符串。请尝试:$(this).attr("href")$(this).attr('pathname')this.attribute("href")。这取决于您是否正在查找添加到名为pathname或href属性的锚点的属性。

答案 2 :(得分:0)

据说,只需要像

那样
$('a').attr('href');

现在,如果您的文档中有许多不同的<A>标记,那么这将是一个问题。你必须区分你的意思。通常你用id或类来做。

$('a#myAnchor').attr('href');