3

うまくいけば、私はこれを正しく表現しています...

jquery関数のオプションとして要素IDを渡そうとしています:

        $('.carousel').createcarousel({
        theid: $(this).attr('id'), // this is the part I am trying to get working
        delay: 150,
        fade:300,
        slide: 700,
        effect:'slide',                   
        orientation:'horizontal',
        loop: false,
        autoplay: false     });

関数自体の中で、オプションは として定義されているoので、次のようなことができます:

alert(o.fade);

そして、「300」を示すアラートが表示されます。しかし、もしそうなら:

alert(o.theid);

未定義と書いてあります。なんで?

4

2 に答える 2

2

thisコンテクスト内のオブジェクトではありません。あなたの.carouselクラスにはそれぞれ Id があり、それを theid 引数に割り当てたいと思います。ただし、作成しているオブジェクトでは、コンテキスト (this引数) は jQuery 要素と一致しません。カルースを作成する関数と一致します。したがって、作成している jQUery オブジェクトは、空の HTML 要素をラップし、ID を持ちません。そのため、未定義として設定されています。

これはあなたがやろうとしていることを達成すると思います:

$('.carousel').each(function() {
    $(this).createcarousel({
            //theid: $(this).attr('id'),                 
            theid: this.id,  //thanks jtheman
            delay: 150,
            fade:300,
            slide: 700,
            effect:'slide',                   
            orientation:'horizontal',
            loop: false,
            autoplay: false     });
});

これにより、すべてのカルーセル クラスが反復処理され、thisコンテキストが正しく設定され、createcarousel関数が適用されます。

于 2012-12-07T23:49:59.623 に答える
0
theid: $(this).attr('id')

このコンテキストでは、$(this) は、html オブジェクトではないカルーセル オブジェクトを参照します。

jquery 適用関数を確認してください。関数呼び出しのコンテキストを指定できます

http://api.jquery.com/Types/?rdfrom=http%3A%2F%2Fdocs.jquery.com%2Fmw%2Findex.php%3Ftitle%3DTypes%26redirect%3Dno#Context.2C_Call_and_Apply

「コンテキスト、呼び出し、適用」までスクロールします

これが役立つことを願っています


他の回答に対して行ったコメントを考慮すると:

その場合、ID を渡す必要はありません。これを試して :

$(".carousel").click(function(event){ 
    alert(event.target.attr("id")); 
}); 

event.target は、クリックされた html オブジェクトを表します

これはうまくいくはずです

于 2012-12-07T23:50:54.533 に答える