无法让jQuery .each()工作

时间:2013-08-28 14:17:54

标签: jquery html

我的页面的3个部分中包含此HTML代码:

<div class="pjesmarrje">
    <a href="#" onclick="window.open('https://www.facebook.com/sharer/sharer.php?u='+encodeURIComponent(location.href),'facebook-share-dialog','width=626,height=436'); return false;">
        <div></div>
        <span>Kliko këtu për pjesëmarrje</span>
    </a>
</div>

并且,我试图在点击时更改div内部的背景图像。我得到了这个jQuery代码:

$(document).ready(function() {
    $(".pjesmarrje").click(function() {
        $(".pjesmarrje div").css("background-image", "url(images/mumanin_s2.png)");
    });
});

当我点击其中一个元素时,所有其他元素也会更改其背景图像。我不希望发生这种情况,我希望仅在单击该特定元素时才更改bg图像。我试图使用.each()函数,但它没有用。

感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:1)

$(document).ready(function () {
    $(".pjesmarrje").click(function () {
        $(this).find("div").css("background-image", "url(images/mumanin_s2.png)");
    });
});

答案 1 :(得分:1)

您正在失去所谓的范围。如果您希望它在特定的.pjesmarrje _内工作,您需要以下内容:

$(document).ready(function() {
    $(".pjesmarrje").click(function() {
        // `this` is a reference to the `.pjesmarrje` that triggered the click
        // event. and, within that `<div>` we want to find the `<div>` whose
        // background we want to change.
        $("div", this).css("background-image", "url(images/mumanin_s2.png)");
    });
});

注意第二个参数:$(selector, scope)。这意味着我们只关心点击<div> 中的.pjesmarrje(而不是页面上的所有内容)。

值得深思:$('div', this)$(this).find('div')同义。