1

リストアイテムをクリックすると、これを使用しようとするたびに-1が返されます。誰かが私を啓発できますか?よろしくお願いします:/ありがとうございます。これが私がやっていることです。サムネイル付きの画像スライダーを作成する必要があります。

function create_thumbs() {
    imagesUl.children('li').each(function() {
        $('<li class="thumbs"><img src="images/thumb.png" alt="thumb"/></li>').addClass('thumb').hide().appendTo('ul#thumbs').fadeIn(300)
        .click(function() {
            goToSlide();
            return false;
        });
    });
}

これは、スライドショーにある画像ごとにサムネイルを作成する機能です。以下は、親指がクリックされた後に対応する画像に移動するために作成する関数の開始です。

function goToSlide() {
    var thumbClicked = $(this);
    alert(thumbClicked.parent('ul#thumbs').index());
}

Alertは常に-1を返します。私はいくつかの方法を試しました。何が問題なのか?

誰かがいくつかのhtmlを要求したので、これが問題にとって重要な唯一のことです:

<div id="slider">
                    <ul id="images">
                        <li><img src="images/slideshow/1.jpg" alt="1" title="1"/></li>
                        <li><img src="images/slideshow/2.jpg" alt="2" title="2"/></li>
                        <li><img src="images/slideshow/3.jpg" alt="3" title="3"/></li>
                    </ul>
                    <ul id="thumbs">

                    </ul>
                </div>
4

2 に答える 2

4

thisgoToSlide関数では、グローバルスコープですwindow。以下を使用して、実行コンテキストを明示的に設定できますcall

goToSlide.call(this);

または、クリックした要素を引数として渡すこともできます。

goToSlide(this);
....
function goToSlide(thumbClicked){
    alert(thumbClicked.parent('ul#thumbs').index());
}
于 2013-01-07T18:38:43.413 に答える
1

私たちがあなたを助けやすくするために、常に最小バージョンをhttp://jsfiddle.net/に投稿するようにしてください。http://dailyjs.com/2012/06/25/this-binding/も読んでください

これを試して

function create_thumbs() {
    imagesUl.children('li').each(function() {
        $('<li class="thumbs"><img src="images/thumb.png" alt="thumb"/></li>').addClass('thumb').hide().appendTo('ul#thumbs').fadeIn(300)
        .click(function() {
            goToSlide($(this));
            return false;
        });
    });
}

function goToSlide(thumbClicked) {
    alert(thumbClicked.parent('ul#thumbs').index());
}
于 2013-01-07T18:42:36.037 に答える