0

我有这个页面,第一个按钮工作正常。

我想在按下第二个按钮时给我href中的链接,我试过这样,但我得到了整个页面,而不仅仅是链接的值,为什么?

<html>
<head>
  <script src="jquery.js"></script>
  <script type="text/javascript">
    $(document).ready(function(){

      var url = "http://localhost/test/asdfasdf.php";

      $("#button").on("click", function() {
        $('body').load( url  );
       });

      $("#button2").on('click',function(){
        $('body').load( url +"#link" );
      });
    });
</script>
</head>
<body>
  <input type="button" id="button" value="load" />
  <input type="button" id="button2" value="search for a tag" />
</body>
</html>
4

3 回答 3

4

我想你想要一个空间:

$('body').load(url + " #link");

http://api.jquery.com/load/#loading-page-fragments

您似乎想要的只是该URLhref上的a#link元素。因此,无需将其加载到 中<body>,只需发出 AJAX 请求,然后查看结果:

$.ajax({
    type: "GET",
    url: "http://localhost/test/asdfasdf.php",
    dataType: "html"
}).done(function (data) {
    var the_link = $(data).find("#link");
    alert(the_link.attr("href"));
});

并将 放入href<body>,在方法中添加这一行.done()

$("body").html(the_link.attr("href"));
// or
$("body").append(the_link.attr("href"));

但是如果你真的想将a#link元素加载到<body>中,做你之前所做的,然后寻找a#link元素并获取它的属性:

$('body').load(url + " #link", function () {
    var the_link = $("#link");
    alert(the_link.attr("href"));
});
于 2013-03-29T20:24:58.330 回答
3

编辑

您正在尝试<a>在不同页面上捕获 href 。试一试:

$.get(url+' #link', function(data) {
    var $link = $(data).find('a').attr('href');
    alert($link);
});

这是我最好的猜测,但它是在黑暗中拍摄的。

于 2013-03-29T20:25:06.287 回答
1

当前,您的代码评估为.load('http://localhost/test/asdfasdf.php#link'),其中#link是无用的片段。您需要一个空间来产生 jQuery 的自动 DOM 解析和元素加载的特殊行为。

$("body").load(url + " #link");

编辑:获取实际链接值:

$.get(url).done(function (html) {
    console.log($(html).find('#link').attr('href'));
});

您还可以附加到回调body内部。.done

于 2013-03-29T20:25:44.537 回答