我有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的活动。我所做的是解析&#34; A&#34;具有&#34; id&#34;的对象包含&#34; show_device_dialog _&#34;然后尝试将一个函数挂钩到弹出对话框的对象。
现在,我对此很新,所以我通过蛮力做了一点:
$(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
这表明正在查找和处理这两个链接。然而,发生的事情是链接似乎没有&#34;点击&#34;触发器与它们相关联。此外,还会打开一个虚假的新浏览器窗口,就好像其中一个链接被点击一样。
没有多链接搜索块的pop代码本身工作正常,并且经过验证可以执行我想要的操作。所以,问题在于我如何处理&#34;发现&#34;我认为DOM对象。
有人能指出我的错误在哪里吗?
答案 0 :(得分:0)
来自fine manual:
.each(function(index,Element))
[...]回调是在当前DOM元素的上下文中触发的, 所以关键字
this
引用了元素。
因此,在$("a[id^='show_device_dialog_']").each
回调中,@
是原始DOM元素,而不是jQuery包装版本。这意味着你正在调用DOM元素的click
方法,而不是jQuery。你想说:
$("a[id^='show_device_dialog_']").each ->
console.log "...loop..."
$(@).click (e) ->
#...