簡體   English   中英

帶有ERB標簽的Javascript

[英]Javascript with ERB tag

我有一個網站,該網站的網格在一頁上有多個帖子。 我正在嘗試編寫一個JavaScript函數來更改頁面上特定帖子上的html。

我在我的<% @posts.each do |post| %> <% @posts.each do |post| %>循環

<script type="text/javascript">
    var ids = '#<%= song.id %>';
    function tagInfo(tag) {
    $(ids).html(tag);
}
</script>

這是一個onClick函數。 唯一的問題是,該函數無法正確獲取ID。 當我單擊按鈕時,什么也沒有發生。 如果我將其ids變量更改為說“#5”,那么它將在第五篇文章中工作。 但是,當我使用erb標簽時,它不起作用。

但是當我檢查頁面時,腳本看起來像這樣

<script type="text/javascript">
var ids = '#5';
    function tagInfo(tag) {
        $(ids).html(tag);
    }
</script>

因此,它應該可以正常工作……任何建議。 我已經嘗試過<%= raw song.id%>,但這是行不通的。

具有onClick處理程序的Helper函數

module SongsHelper
    def tags(tag_list)
      markup = ""
      tag_list.each do |tag|
        markup += content_tag(:a, tag, :class => tag, :onClick => 'tagInfo("' + tag +'");')
      end
      raw(markup)
    end
end

當您停止使用嵌入式javascript時,事情實際上要簡單得多。 調試甚至遵循應用程序流程看起來就像一場噩夢。

你需要考慮

jQuery使附加處理程序和遍歷DOM變得非常簡單,您無需像1999年那樣對其進行破解。

因此,您可以將事件處理程序與數據屬性一起使用,以免造成這種混亂。

<div id="posts">
  <% @posts.each do |post| %>
    <article class="post">
      <!-- more stuff -->
      <button class="tryme" data-id="<%= post.id %>">Try Me</button>
    </acticle>
  <% end %>
<% end %>

然后,我們可以創建一個事件處理程序:

$(document).ready(function(){
  $('.post .tryme').click(function(){
    alert("You clicked: " + $(this).data('id'));
  });
});

這個例子可能並不完全是您想要的,但是您已經了解了一般想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM