5

私はこれをしばらく取り組んでおり、どこにも出てこないようです。基本的に私はクラスによって入力の束にオートコンプリートを持っていますが、私はajaxを投稿するオブジェクトを構築するために特定の入力IDを取得する必要があります(GETではなくこのプロジェクトでPOSTを使用する必要があります)。クラスのjQuery自動補完、IDの取得方法

$(".input_autocomplete").autocomplete({ 
    source: function(request, response) { 
    // here is where I get the hash from local storage, 
    // reference the id and build the object 
    // tried this.id, $(this).prop('id'), no luck 
    $.ajax({ 
    url: '/somepath/filename.htm', 
    contentType: 'application/json', 
    dataType: 'json', 
    type: 'POST', 
    data: JSON.stringify(obj), 
    success: function(json) { 
     return { 
     label: item.label, 
     value: item.label 
     } 
    }, 
    error: function() { 
     // error handling 
    } 
    }); // ajax 
} // source 
}); 
+0

私はjQueryのに非常に新しいんだけど、あなたはATTRを使用してみましたが( 'id')の代わりに '.prop'( 'id')の代わりに?私の知る限り、idは小道具ではなくattrです。また、ドットシンタックスを使用しているので、jQueryオブジェクトをターゲットにしているので、$(this)を使うべきです。それが問題を解決することを願っています。 – rafaelbiten

答えて

10

試してみてください。

$(this.element).prop("id"); 

か:sourceコールバックの内側

this.element[0].id; 

thisは、ウィジェットのインスタンスを参照します。ウィジェットが添付される要素を取得するには、this.element(jQueryオブジェクト)を使用する必要があります。

+0

Andrew、それは何人かの人が使っている.get(0)と関係がありますか?はいの場合、これは私が本当に理解できないものです。そのような要素を指すことが必要なのはなぜですか? = \ – rafaelbiten

+2

@ 7th:私の更新をご覧ください。オートコンプリートの中の 'this'はウィジェットのインスタンスなので、' this.element'はそれが適用された要素です。 'element.get(0)'はjQueryオブジェクトの最初の要素を取得し、上記の 'element [0]'と等価です。 –

+0

まあ、このシナリオではかなり意味がありますが、時には.get(0)を使っている人が使用するべきではないと思います。残念ながら私は今良い例を考えることができません。私はもう一度それを見て、なぜそれが使われているのか理解できるかどうかを見て、もっと注意を払うつもりです。私に説明する時間をとってくれてありがとう。それはあなたの一種でした。 – rafaelbiten

3

私のプロジェクトで試してみました。これが私の仕事:

$(this.element.get(0)).attr('id'); 
+0

はい、それは素晴らしい作品です。 –

1

を私は、あなたに似たような状況にあったuser1572796、これは私のために働いていたものです:

$(this).prop("id"); 
関連する問題