jquery循环遍历多个元素,同时更改多个元素?

时间:2013-04-26 13:26:42

标签: jquery loops

我有以下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,每次都会有多个。

任何帮助都将不胜感激。

2 个答案:

答案 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");
        });
    }
});

演示:http://jsfiddle.net/7Rc9X/

答案 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');
});