0

私は最近、Resig のQuicksilver Live Search の jQuery リライトを見つけて、その仕組みを気に入っていますが、新しい .on() イベント ハンドラで動作するように更新しようとしています。しかし、私の能力(またはその欠如)は私を失敗させます。

「this.keyup(filter)...」を編集する必要があると考えていますが、何も機能しません。何か案は?

更新:明確にするためのポイントです。スクリプトを更新したいという私の考えは、動的に持ち込まれたリスト項目を受け入れることです。静的なリストであればすべて正常に動作しますが、ajax 呼び出しで作成されたリストを導入したため、動作しません。フィドルをモックアップして、すぐにここにリンクします。それまでの間、誰かが私を助けてくれれば、私の隠れ家を救うことができます. ありがとう。

jQuery.fn.liveUpdate = function(list){
    list = jQuery(list);

    if ( list.length ) {
    var rows = list.children('li'),
        cache = rows.map(function(){
        //return this.innerHTML.toLowerCase();
        return $('a', this)[0].innerHTML.toLowerCase();
        });

    this
        .keyup(filter).keyup()
        .parents('form').submit(function(){
            return false;
        });

    }

    return this;

    function filter(){
        var term = jQuery.trim( jQuery(this).val().toLowerCase() ), scores = [];

        if ( !term ) {
            rows.show();
        } else {
            rows.hide();

            cache.each(function(i){
                var score = this.score(term);
                if (score > 0) { scores.push([score, i]); }
            });

            jQuery.each(scores.sort(function(a, b){return b[0] - a[0];}), function(){
                jQuery(rows[ this[1] ]).show();
            });
        }
    }
};
4

1 に答える 1

0

たまたまこの投稿に出くわしました。 jfkの助けを借りて、私が探していたものをほぼ要約しています。動的コンテンツが作成された後にスクリプトを実行したかったのですが、ユーザーが検索したいときにスクリプトを呼び出す必要がありました。

$('#staticParent').on("click", "#searchField", function(){
    $(this).livesearch("#dynamicElements").focus();
});

これを改善するためのより高度な開発者からの追加情報は、すべて耳にしています。これがいつか別の人に役立つことを願っています。:)

于 2013-01-16T01:07:48.753 に答える