JqueryUI val()を使ってオートコンプリートコールバック関数が動作しない

私はjqueryuiオートコンプリートを使用しており、 ContentFlow を使用して画像ギャラリーの検索を設定しています画像が見つかると、小さなアイコンが表示され、ユーザーはライトボックス(prettyphoto)で画像を開くことができます

ここにコードです:

$(function() {
    var projects = [
        {
            value: "Alcatraz",
            label: "Alcatraz",          
            icon: "Alcatraz.jpg",
            url: "slides/Alcatraz.jpg",
            desc: "",
            imgN: "1"
        },
        {
            value: "Amber Light",
            label: "Amber Light",           
            icon: "Amber Light.jpg",
            url: "slides/Amber%20Light.jpg",
            desc: "",
            imgN: "2"
        },
        {
            value: "Blue Boat",
            label: "Blue Boat",         
            icon: "Blue Boat.jpg",
            url: "slides/Blue%20Boat.jpg",
            desc: "",
            imgN: "3"
        }
    ];

    $( "#project" ).autocomplete({
        minLength: 0,
        source: projects,
        focus: function( event, ui ) {
            $( "#project" ).val( ui.item.label );
            return false;
        },
        select: function( event, ui ) {
            $( "#project" ).val( ui.item.label );
            $( "#project-id" ).val( ui.item.value );                
            $( "#project-icon" ).attr( "src", "thumbs/" + ui.item.icon );
            $( "#project-description" ).html( ui.item.desc );
            $( "#project-label" ).html( ui.item.label );
            $( "#project-link" ).attr("href", ui.item.url );
            $( "#project-link" ).attr("title", ui.item.label );
            return false;
        },

        close: function() {
            var value = $( "#project" ).val( ui.item.imgN );
            cf.moveTo(value);
        }
    })
    .data( "autocomplete" )._renderItem = function( ul, item ) {
        return $( "
  • " ) .data( "item.autocomplete", item ) .append( "" + item.label + " - " + item.desc + "" ) .appendTo( ul ); }; });

    HTML:

    <div id="project-label">Search</div>
    
    <input id="project"/>
    <input type="hidden" id="project-id"/>
    

    私が抱えている問題は、次のような機能です:

    close: function() {
                var value = $( "#project" ).val( ui.item.imgN );
                cf.moveTo(value);
            }
    

    私は画像ギャラリーを使用してcontentflow内の特定の画像にスクロールする必要があります

     cf.moveTo();
    

    私はこの値を返すように私のコードを取得していません。どんな助けもありがとう。

    1
    $( "#project").val(ui.item.imgN); :値を取得する代わりに値を割り当てています。
    追加された 著者 Didier Ghys,

    2 答え

    試練と苦難の後、私はこれを追加の修正コードで動作させる方法を見つけました:

            select: function( event, ui ) {
    
                $( "#project-imgN" ).val( ui.item.imgN );
    
    
                return false;
            },
    
            close: function(event, ui ) {
            function runEffect() {
           //get effect type from 
            var move = $( "#project-imgN" ).val();
    
           //run the effect
            cf.moveTo(move);
        };
    
         runEffect(); 
            }
        })
    
    1
    追加された
    説明を少し変更したコードだけを投稿して他の人がより簡単に役立つようにする方がよいでしょう。
    追加された 著者 Didier Ghys,
    ありがとう。私は無関係のコードを削除しました。
    追加された 著者 Macsupport,

    val()を使用するときは、値を設定するために使用する引数を入力しないでください。値を設定する要素でval()を呼び出すだけで済みます。

    試してください:

      var value = $( "#project "+ui+"."+item+"."+imgN).val();
    

    またはそのようなもの。

    1
    追加された
    情報をありがとう。私は次のような火の見いのエラーが発生します:uiは定義されていません[このエラーでブレーク] var value = $( "#project" + ui + "。+ item +"。 "+ imgN).val();
    追加された 著者 Macsupport,
    申し訳ありませんが、私はこれをテストしませんでした、私はちょうど正しい方向にあなたを指したい。要素の値を取得したい場合は、$( "ここであなたのセレクタ")を使用する必要があります。構文。いいえ、要素を特定する方法を理解するだけです。 Uiは、close関数の引数として渡されないため、未定義です。あなたがそれを必要とするなら、それをグローバルにするだけです。
    追加された 著者 Derk Arts,