加载页面片段时jQuery加载(URL)不起作用?

时间:2013-03-29 20:23:25

标签: javascript jquery html

我有这个页面,第一个按钮运行良好。

我想按下第二个按钮给我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>

3 个答案:

答案 0 :(得分:4)

我想你想要一个空间:

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

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

您似乎想要的只是该网址的href元素的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"));
});

答案 1 :(得分:3)

修改

您正尝试在其他页面上捕获<a>的href。试一试:

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

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

答案 2 :(得分: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