2016-04-10 42 views
1

Dinamik olarak oluşturulmuş bir kimliği bir raylar uygulamasından jQuery'ye geçirmek için veri özniteliğini nasıl kullanırım? Denediğimde, bir uyarı kutusuna göndermediğim sürece değer tanımsız olarak geri döner. (A kesmek olarak hata ayıklama bağlantı kullanır)

Bu kod:

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

uyarı kutusunda dynamic_id gösterir. Aynı seçici kullanılarak Ancak

, bu kod:

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

uyarı kutusunda "tanımsız" gösterir.

[('veri dynamic_id') verir aynı sonuçları .attr kullanarak] Lütfen söyle:

  1. ilk kod çalışır ve daha iyi bir varsa ikinci
  2. değil Neden işleyicisi içinde "#debug_link_id" için this ayarlamak için event delegation kullanmayı deneyin jQuery
+0

: değişiklik 'olayı? 'Page: change' işleyicisi içinde '$ (this)' nedir? – guest271314

cevap

1

içine dinamik kimliklerini çekmek için strateji. yanlış yerde this kastediyoruz çünkü

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

Başka bir olay işleyicisinde “tıklama” işleyicisi oluşturmanın amacı nedir? – guest271314

+0

jQuery ile neler olduğunu anlamak için bunu kullanıyorum. –

+0

@MichaelvanHolst Yukarıdaki bağlantılı sayfayı okudun mu? 'JqVar = $ (this) .data ('dynamic_id')' de '' $ (this) 'ın ne olduğunu kontrol ettiniz mi? – guest271314

1

..

`sayfasını tetikler Ne
$(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 
+0

Üzgünüm, Her iki durumda da hata ayıklama bağlantısını tıklıyorum. Soruyu düzenlerken bunu özledim. –

+0

, jQuery'deki bazı olay işleyicilerinde '$ (this)' yazdığınızda, işlevinizin geçerli nesnesini kullanmak istediğiniz anlamına gelir. –