jQuery函数适用于click()而不是ready()

时间:2014-04-29 12:56:45

标签: javascript jquery

我试图改变这些' href'属性以匹配兄弟元素的属性。

$(function() {
    $(".container").click(function() {
        var href = $(this).find('.one').attr('href');w
        $(this).find('.two').attr('href', href);
    });
})

当点击();'使用事件处理程序,然后点击.container.two的href更新,但是,只要在页面加载后立即使用ready();执行它,它就不会执行。

1 个答案:

答案 0 :(得分:0)

如果您想将上下文保留在.container元素中,只需将click函数更改为each,如下所示:

$(function() {
    $(".container").each(function() {
        var href = $(this).find('.one').attr('href');
        $(this).find('.two').attr('href', href);
    });
});

有关jQuery each功能的更多信息,请参阅here

<强>更新

此外,您可以通过缓存$(this)的值来提高性能,如下所示:

$(function() {
    $(".container").each(function() {
        var $this = $(this),
            href = $this.find('.one').attr('href');

        $this.find('.two').attr('href', href);
    });
});

更新2

如果您不关心.container的上下文,则以下代码将更改所有具有类href的元素的.two属性,这些属性位于元素之后班.one

这是live example in JSFiddle