0

最近、nettuts チュートリアルに基づいて lavalamp プラグインを作成し、他のサイトでうまく機能しました。他のサイトで再利用したかったのですが、次のエラーが発生しました。

キャッチされていない TypeError: 未定義のプロパティ 'left' を読み取ることができません

私はjQueryの初心者で、修正方法がわかりません。

コード:

(function($){

    $.fn.lavylamp = function(options)
    {

        options = $.extend({
            overlay: 20,
            speend: 300,
            reset: 1500,
            color: '#78C2FF',
            easing: 'easeOutExpo',
        }, options);

        return this.each(function(){

            var nav = $(this),
            currentPageItem = $('#active', nav),
            cursor,
            reset;

            $('<li id="blob"></li>').css({
                width: currentPageItem.outerWidth(),
                left: currentPageItem.position().left,
                top: currentPageItem.position().top,
                backgroundColor: options.color,
            }).appendTo('#nav');

            blob = $('#blob', nav);

            $('li', nav).hover(function(){

                blob.animate(
                {
                    left: $(this).position().left,
                    width: $(this).width()
                },
                {
                    duration: options.speed,
                    easing: options.spped,
                    queue: false
                }
                );

            }, function(){
                clearTimeout(reset);

                blob.stop().animate({
                    left: $(this).position().left,
                    width: $(this).width()
                }, options.speed);

                reset = setTimeout(function(){
                    blob.stop().animate({
                        width: $(this).outerWidth(),
                        left: $(this).position().left,
                    }, options.speed);
                }, options.reset);

            });

        });

    }

})(jQuery);

エラーはこの部分に適用されます。

$('<li id="blob"></li>').css({
                width: currentPageItem.outerWidth(),
                left: currentPageItem.position().left,
                top: currentPageItem.position().top,
                backgroundColor: options.color,
            }).appendTo('#nav');

誰かヒントを教えてください。

編集

HTML

<ul id="nav" class="unstyled inline">
            <li><a href="">Start up Business</a></li>
            <li><a href="industries.php=2">Entrepreneurial & Familit Owned Business</a></li>
            <li><a href="">Hight Net Worth Individuals</a></li>
            <li><a href="careers.php=1">Professionlas</a></li>
            <li><a href="industries.php=8">Real Estate Professionlas</a></li>
            <li><a href="industries.php=7">Not For Profit</a></li>
        </ul>
4

2 に答える 2

0

単なる推測ですが、私は次のように推測しています。

 currentPageItem = $('#active', nav),

次のようにする必要があります。

 currentPageItem = $('.active', nav),

#は ID による選択.用、 はクラスによる選択用です。ID は一意であるため、要素ごとに異なる ID を検索しても意味がありませんactive。これがクラスの用途です。

于 2013-06-11T06:32:58.120 に答える
0

2 つではなく 1 つの要素を選択したい場合がありますか?

currentPageItem = $('#active', nav)

id="active" および nav ですべてを選択します。

于 2013-06-11T06:54:03.020 に答える