1

以下の html では、$(this) を使用して DOM をトラバースしようとしていますが、見つけられない問題があります。

<div class="albumWrapper">
    <div class="album" id="test1">
        <div class="fadein">
            <img src="images/album/1_b.jpg" />
            <img src="images/album/2_b.jpg" />
        </div>
        <div class="descWrapper">
            <h1>
                <a href="1">Weddings</a>
            </h1>
            <div class="description">
                <span class="quotes">"</span>description 1<span class="quotes">"</span>
            </div>
        </div>
    </div>
    <div class="gallery"></div>
    <div class="album" id="test1">
        <div class="fadein">
            <img src="images/album/1_b.jpg" />
            <img src="images/album/2_b.jpg" />
        </div>
        <div class="descWrapper">
            <h1>
                <a href="2">Weddings</a>
            </h1>
            <div class="description">
                <span class="quotes">"</span>description 2<span class="quotes">"</span>
            </div>
        </div>
    </div>
    <div class="gallery"></div>
</div>

これは私が書いたjqueryです。しかし、$(this) を使用している場合、問題があるようです。だから誰かが間違いを見つけるのを手伝ってください。それは役に立ちます。

        $(".descWrapper h1 a ").on("click", function(e) {
            e.preventDefault();
            $.ajax({
                url: 'ajaxify/gallery.php',
                type: "get",
                data: "id=" + $(this).attr('href'),
                beforeSend: function() {

                },
                success: function(data) {
                    $(this).parents(".album").next(".gallery").html(data);
                },
                error: function(xhr, status, errorThrown) {
                    alert();
                }
            });
        });
4

2 に答える 2

1

ajax のコンテキスト オプションを使用します。

$(".descWrapper h1 a ").on("click", function (e) {
    e.preventDefault();
    $.ajax({
        context:this,
        url: 'ajaxify/gallery.php',
        type: "get",
        data: "id=" + $(this).attr('href'),
        beforeSend: function () {

        },
        success: function (data) {
            //now 'this' here refers to the clicked link
            $(this).parents(".album").next(".gallery").html(data);
        },
        error: function (xhr, status, errorThrown) {
            alert();
        }
    });
});
于 2013-06-29T08:14:50.727 に答える