使用Jquery检索链接

时间:2011-08-29 10:28:32

标签: javascript jquery screen-scraping hyperlink

我在一两天前发布了这个,收到了一个对JSfiddle起作用的答案,但是对我的实际代码没有用。

  <div id="PublicResults">
<h2>
<dl>
<dt>
<a onmouseout="swho.alone.OnMouseOut(event)" onmouseover="swho.alone.showPopup(event, 'DR647E481', 'pra**', '', '', 'everyone', 'closed')" href="/SWApp/detailAction.do?key=DR647E481&search=pra**&soundex=&stanfordonly=&affilfilter=everyone&filters=closed">Ajay Prakash</a>
</dt>

现在,我尝试了$ jq(“#PublicResults a”)。attr(“href”),它在jsfiddle中工作,但是没有在页面上工作(我的控制台读取未定义)。但是,当我尝试$ jq(“#PublicResults a [href]”)。attr(“href”)时,我得到当前网页的网址 - 所以我想问题是.attr()只返回第一个元件

所以我的问题是双重的 - 如果我上面写的是正确的,我如何使.attr()返回所有元素。如果没有,我该怎么做才能在href中检索网址?

3 个答案:

答案 0 :(得分:2)

你要在所有链接的数组列表中循环,你想要抓取:

$jq("#PublicResults a").each(function()
{
   alert($(this).attr("href"));
});

答案 1 :(得分:0)

如果你的jQuery实例绑定到$jq()(而不是通常的$()jQuery()),那么$jq("#PublicResults a[href]").attr("href")应该有效。你可以发一个链接到它不起作用的地方吗?

我怀疑其中一项:

  1. 您可能在将#PublicResults元素添加到页面
  2. 之前运行jQuery代码
  3. $jq()功能可能不可用
  4. 其他可能正在改变你的链接href

答案 2 :(得分:0)

您可以使用map从jQuery包装对象中提取所有href。例如

$('...').map(function() { return $(this).attr('href'); });

这将返回一个jQuery包装的数组,以获得正常的JavaScript数组,只需使用.get()