除警报外,$(this).data(' dynamic_id')未定义

时间:2016-04-10 19:11:52

标签: jquery ruby-on-rails this custom-data-attribute

如何使用data-attribute将一个动态生成的id从rails应用程序传递给jQuery?当我尝试时,除非我将它发送到警告框,否则该值将返回undefined。

此代码(使用调试链接作为黑客):

.remove

在警告框中显示dynamic_id。

但是,使用相同的选择器,此代码:

$(document).on "page:change", ->
    $('.debug_link_id').click ->
        alert $(this).data('dynamic_id)

显示" undefined"在警报框中。 [使用.attr(' data-dynamic_id')给出相同的结果]

请告诉我:

  1. 为什么第一个代码有效,第二个代码没有
  2. 如果有更好的策略将动态ID提升为jQuery

2 个答案:

答案 0 :(得分:1)

尝试使用event delegation在处理程序中将this设置为"#debug_link_id"

  $(document).on "page:change", "#debug_link_id", ->

答案 1 :(得分:1)

那是因为你在错误的地方提到this ..

$(document).on "page:change", ->
    $('#debug_link_id').click ->
        alert $(this).data('dynamic_id)// <-- That "this" is referring a object with id debug_link_id

$(document).on "page:change", ->
    jqVar = $(this).data('dynamic_id') //<-- That "this" is referring a object that I don't know where this is come from...
    $('#link_id').click ->
        alert jqVar