DB プルに基づいて一連のリンクを生成する Ruby/Rails コードがあります。結果のリンクは次のようになります。
<a href="/show_device_dialog" id="show_device_dialog_1">Call Customer 1</a>
<br />
<a href="/show_device_dialog" id="show_device_dialog_28">Call Customer 28</a>
<br />
ユーザーがリンクをクリックすると、先に進む前にいくつかのオプションを確認するダイアログが開きます。そのために、UJS を使用して「クリック」イベントをトラップしようとしています。私がしているのは、「show_device_dialog_」を含む「id」を持つ「A」オブジェクトのコンテンツを解析し、ダイアログをポップする関数をそれらにフックしようとすることです。
今、私はこれにかなり慣れていないので、力ずくで少しやっています:
$(document).ready ->
console.log "building show_device_dialog..."
$("a[id^='show_device_dialog_']").each ->
console.log "...loop..."
@click (e) ->
dialog_form = undefined
url = undefined
dialog_form = undefined
url = undefined
url = $(this).attr("href")
dialog_form = $("<div id=\"dialog-form-"+@id+"\">Loading form...</div>").dialog(
autoOpen: false
width: 520
modal: true
open: ->
$(this).load url + " #content"
close: ->
$("#dialog-form"+@id).remove()
)
dialog_form.dialog "open"
e.preventDefault()
console.log "...done*"
ページが読み込まれると、コンソールに次のように表示されます。
building show_device_dialog... contacts.js:3
...loop... contacts.js:5
...done* contacts.js:28
...loop... contacts.js:5
...done* contacts.js:28
これは、2 つのリンクが検出され、処理されていることを示しています。ただし、リンクに「クリック」トリガーが関連付けられていないように見えます。さらに、リンクの 1 つがクリックされたかのように偽の新しいブラウザ ウィンドウが開きます。
マルチリンク検索ブロックのない pop コード自体は正常に動作し、私が望むことを実行することが検証されています。したがって、問題は、「見つかった」DOM オブジェクトをどのように処理しているかにあると思います。
私の間違いがどこにあるかについて、誰かが私を正しい方向に向けることができますか?