我有以下html示例
<div id="main"><input type="hidden" name="bilbo" value="0"><a id="baggins" href="somewhere.com"></div>
<div id="main"><a id="baggins" href="somewhere-else.com"></div>
<div id="main"><a id="baggins" href="somewhere-elseagain.com"></div>
我需要做的是循环使用id为main的每个div,并查找隐藏的输入类型是否存在。
然后我需要在隐藏输入的同一div中更改该链接的href,每次都会有多个。
任何帮助都将不胜感激。
答案 0 :(得分:1)
假设您使用类而不是重复ID
$(".main").each(function() {
var isHidden = $(this).children("input[type='hidden']").length > 0;
if (isHidden) {
$(this).children("input[type='hidden']").nextAll("a").each(function() {
//Change the href now
$(this).attr("href", "newlink");
});
}
});
答案 1 :(得分:1)
由于您无法控制HTML,因此请忘记ID。
$('div:has(input[type=hidden]) a')
这意味着,给我所有嵌套在div
元素内的超链接,这些元素必须具有嵌套在DIV中的隐藏输入。
你应该大致有以下
$('div:has(input[type=hidden]) a').each(function (i, link) {
$(link).attr('href', 'whatever.bla');
});
如果您将rss feed html提取到字符串中,那么您可以这样做:
// assuming you fetched the rss feed as a string or responseText
var htmlString = '<div id="main"><input type="hidden" name="bilbo" value="0"><a id="baggins" href="somewhere.com"></div><div id="main"><a id="baggins" href="somewhere-else.com"></div><div id="main"><a id="baggins" href="somewhere-elseagain.com"></div>';
var $feeds = $(htmlString);
$feeds.find('div:has(input[type=hidden]) a').each(function (i, link) {
$(link).attr('href', 'whatever.bla');
});