0

以下のコード(Coffeescript)では、jQueryオートコンプリートデータソースのAJAX呼び出しで、コードの5行目に、2つのパラメーター(term:とll:)を渡しています。ll:$(this)を取得しようとしています。 .autocompleteが適用されたDOM要素になります。この場合、その$('[type = "text"] [name * = "[location]"]')5行目の($ this)でそのDOM要素を具体的に参照する必要があります。そのスコープでは、DOM要素ではない他の何かを指します。誰かが私がする必要があることを説明するのを手伝ってもらえますか?

$('[type="text"][name*="[location]"]').autocomplete(
    source: (request, response) ->
      $.ajax 
        url: $('[type="text"][name*="[location]"]').data('autocomplete-source')
        data: {term: request.term, ll: $(this).siblings('[name*="[geocode_location]"]')}
        contentType: "application/json; charset=utf-8"
        success: (data) ->
          response $.map(data, (item) ->
            value: item.value
            label: item.label
            address: item.address
          )

    focus: (event, ui) ->
      event.preventDefault()
      $(this).val ui.item.label
    select: (event, ui) ->
      event.preventDefault()
      $(this).val ui.item.label
      $(this).siblings('[name*="[foursquare_id]"]').val ui.item.value
  ).data("autocomplete")._renderItem = (ul, item) ->
    $("<li>").data("item.autocomplete", item).append("<a>" + item.label + "<br>" + item.address + "</a>").appendTo ul
4

3 に答える 3

3

Coffeescriptについては何も言えませんがthis.element、要素を返す必要があります(jQueryオブジェクトです)

したがって、次のようになります。

ll:this.element.siblings('[name*="[geocode_location]"]')

ただし、兄弟はjQueryオブジェクトを返し、リクエストパラメータとして渡すことができなかったため、これは機能しません。

于 2012-11-01T21:35:10.157 に答える
0

@ Dr.Molleが提案したように、this.elementは、必要なDOM要素を取得するのに役立ちます。以下のコードブロックを更新しました。適用方法については、5行目を参照してください。

$('[type="text"][name*="[location]"]').autocomplete(
    source: (request, response) ->
      $.ajax 
        url: $('[type="text"][name*="[location]"]').data('autocomplete-source')
        data: {term: request.term, ll: this.element.siblings('[name*="[geocode_location]"]').val()}
        contentType: "application/json; charset=utf-8"
        success: (data) ->
          response $.map(data, (item) ->
            value: item.value
            label: item.label
            address: item.address
          )

    focus: (event, ui) ->
      event.preventDefault()
      $(this).val ui.item.label
    select: (event, ui) ->
      event.preventDefault()
      $(this).val ui.item.label
      $(this).siblings('[name*="[foursquare_id]"]').val ui.item.value
  ).data("autocomplete")._renderItem = (ul, item) ->
    $("<li>").data("item.autocomplete", item).append("<a>" + item.label + "<br>" + item.address + "</a>").appendTo ul
于 2012-11-01T21:47:26.237 に答える
0

オートコンプリート関数に中括弧がなく、セレクターが私のテストケースで機能していません。

このjQueryセレクターを試してください:

$('input[type="text"][name*="location"]').autocomplete({ ....
于 2012-11-01T21:10:52.533 に答える