如何使用变量在 coffeescript 中设置 jQuery 选择器?
How do I set a jQuery selector in coffeescript using a variable?
我正在编写一个 Rails 应用程序,我在同一页面上有多个表单,它们都有不同的 ID。在咖啡脚本中,我试图设置标识符以访问每个中的文本区域。下面是 html 在浏览器中的样子的快速示例。
HTML
<a href="#" class="link" data-plan="1">Click here</a>
<form id="new_item_plan_1">
<textarea id="plan_1_item_field"></textarea>
</form>
正在设置计划 ID 并尝试访问文本区域
plan_id = 0
$(".link").click ->
plan_id = $(this).data("plan")
$("#plan_"+plan_id+"_item_field").keypress ->
...Some code...
所以我首先初始化了 plan_id
变量,然后将其设置为 .link
s 数据计划值。但是我的按键事件在 textarea 上不起作用,我在控制台中也没有收到错误消息。
当我进行测试时 link 和 console.log
它...
plan_id = 0
$(".link").click ->
plan_id = $(this).data("plan")
$("#test).click ->
console.log(plan_id)
它在控制台中打印出正确的 plan_id
值就好了,所以我一定是在文本区域标识符中做错了什么。我哪里错了?谢谢。
Link 到 jsfiddle,注意按键事件如何不起作用 https://jsfiddle.net/cfscr/175/
<a href="#" class="link" data-plan="1">Click here</a>
<form id="new_item_plan_1">
<textarea id="plan_1_item_field" class='item-field' data-plan='1'></textarea>
</form>
plan_id = 0
$(".link").click ->
plan_id = $(this).data("plan")
$(".item-field").keypress ->
if $(this).data('plan') == plan_id {
...Some code...
您可以在文本区域中使用正则表达式而不是另一个 data
标记,我只是懒惰 ;)
您的代码中发生的事情是按键绑定应用于页面加载,因此它仅在计划 ID 仍为 0 时应用一次。更新 plan_id 时不会重新应用。
我应该注意到,这似乎是一件奇怪的事情,但您需要将绑定放在点击事件中。也就是说,你想要
$("#plan_"+plan_id+"_item_field").keypress ->
...Some code...
每次触发点击事件时应用。
为此,必须正确缩进
plan_id = 0
$(".link").one 'click', ->
plan_id = $(this).data("plan")
$("#plan_"+plan_id+"_item_field").keypress ->
...Some code...
这样一来,当用户多次单击该按钮时,它会将绑定应用到该按键。
这是你想要完成的吗?
我正在编写一个 Rails 应用程序,我在同一页面上有多个表单,它们都有不同的 ID。在咖啡脚本中,我试图设置标识符以访问每个中的文本区域。下面是 html 在浏览器中的样子的快速示例。
HTML
<a href="#" class="link" data-plan="1">Click here</a>
<form id="new_item_plan_1">
<textarea id="plan_1_item_field"></textarea>
</form>
正在设置计划 ID 并尝试访问文本区域
plan_id = 0
$(".link").click ->
plan_id = $(this).data("plan")
$("#plan_"+plan_id+"_item_field").keypress ->
...Some code...
所以我首先初始化了 plan_id
变量,然后将其设置为 .link
s 数据计划值。但是我的按键事件在 textarea 上不起作用,我在控制台中也没有收到错误消息。
当我进行测试时 link 和 console.log
它...
plan_id = 0
$(".link").click ->
plan_id = $(this).data("plan")
$("#test).click ->
console.log(plan_id)
它在控制台中打印出正确的 plan_id
值就好了,所以我一定是在文本区域标识符中做错了什么。我哪里错了?谢谢。
Link 到 jsfiddle,注意按键事件如何不起作用 https://jsfiddle.net/cfscr/175/
<a href="#" class="link" data-plan="1">Click here</a>
<form id="new_item_plan_1">
<textarea id="plan_1_item_field" class='item-field' data-plan='1'></textarea>
</form>
plan_id = 0
$(".link").click ->
plan_id = $(this).data("plan")
$(".item-field").keypress ->
if $(this).data('plan') == plan_id {
...Some code...
您可以在文本区域中使用正则表达式而不是另一个 data
标记,我只是懒惰 ;)
您的代码中发生的事情是按键绑定应用于页面加载,因此它仅在计划 ID 仍为 0 时应用一次。更新 plan_id 时不会重新应用。
我应该注意到,这似乎是一件奇怪的事情,但您需要将绑定放在点击事件中。也就是说,你想要
$("#plan_"+plan_id+"_item_field").keypress ->
...Some code...
每次触发点击事件时应用。 为此,必须正确缩进
plan_id = 0
$(".link").one 'click', ->
plan_id = $(this).data("plan")
$("#plan_"+plan_id+"_item_field").keypress ->
...Some code...
这样一来,当用户多次单击该按钮时,它会将绑定应用到该按键。 这是你想要完成的吗?