0

私は少し奇妙な状況にあります。live()関数とbind()関数の前提は理解していますが、必要ないと思われる状況では、必要なようです。説明します。

jqueryでオートサジェストを作成しました。ページの上部にautosuggest.jsを含めました。次に、入力フィールドがあります。

JSの基本は次のように機能します。

$(".autosuggest").keyup(function()
{
}

これは機能します-キーアップで、私の関数は期待どおりに実行されます-入力フィールドは最初からページにあるので、live()またはbind()を使用する必要はありません...

今..私は「スター評価者」風のスクリプトも作成しました。いろいろあります

  • 要素(スタイルが設定されている)、およびホバーするとスタイルが変更されます...

     $('.rating li').mouseover(function() {
    }
    

    まだ動作しません

     $('.rating li').live('mouseover',function() {
    }
    

    します。

    オートサジェストの場合に使用しないのに、この状況で「ライブ」を使用する必要があるのはなぜですか?

    ありがとう

  • 4

    4 に答える 4

    2

    これを引き起こすと私が想像できる唯一のことは、悲惨なイベントの欠如です。これはうまくいくはずです:

    $(function () {
        $('.rating li').mouseover(function() {
        }
    });
    
    于 2010-09-13T15:45:55.757 に答える
    1

    作業し.ratings liていないときはまだ解析されていません.mouseover()

    それをラップする$(document).ready(function() {...});か、使用することができます.live()(これにより、スクリプトのその時点で現在解析されている要素と、将来追加される要素のバインディングが作成されます)。

    于 2010-09-13T15:44:45.987 に答える
    0

    入れましたか

    $('.rating li').mouseover(function() {
    }
    
    $(document).ready(function() {....} で?

    .js ファイルを含めても、ページ内の要素 (「rating li」) が読み込まれていない場合、バインドは行われません。

    于 2010-09-13T15:46:09.777 に答える
    0

    あなたのコードをもっと見なければ、確実に言うのは難しいです。しかし、ページロードが完了する前にスクリプトが実行されていると思います。への呼び出しでバインディング (および存在する特定の dom 要素に依存するその他のもの) をラップしてみてください$(document).ready(...)

    このようなもの:

    $(document).ready( function() {
        $('.rating li').mouseover(function() {
           // whatever
        });
    
        $(".autosuggest").keyup(function() {
           // whatever else
        });
    });
    

    そうでない場合は、さらにコードを投稿してください。さらに掘り下げます。

    幸運を。

    于 2010-09-13T15:48:55.070 に答える