2013-03-04 121 views
0

我有一個用戶頁面,用戶列出他的追隨者和他關注的用戶。如果他點擊一個按鈕,它會顯示追隨者。如果他點擊另一個按鈕,它會顯示他的跟隨用戶。jquery事件只發射第二次點擊 - 爲什麼?

我不明白jquery事件第二次觸發,而不是第一次觸發。我在show.html.erb中設置了用戶「關注」列表。這裏是匹配show.js.erb:

$(function(){ 
    $("#trusts_list_button").click(function(){ 
     $("#relationship_list").html("<%= escape_javascript(render 'follows') %>"); 
    }); 
    $("#trusted_list_button").click(function(){ 
     $("#relationship_list").html("<%= escape_javascript(render 'followers') %>"); 
    }); 
}); 

這裏是節目的看法:

<%= @user.name %> 
<%= link_to "Add friends", facebook_friends_user_path %> 

<table><tr><td> 
<%= link_to "Trusts", "#follows", :id => "trusts_list_button", :remote => true%></td> 
<td><%= link_to "Trusted by", "#followers" , :id => "trusted_list_button", :remote => true %></td></tr></table> 
<div id = "relationship_list"><%= render 'follows' %></div> 

第一次點擊後,則這兩個按鈕正常工作。但是,第一次初步點擊確實讓我失望。 我會很感激任何幫助;這不是我第一次遇到JQuery問題,而且我對修復這種簡單問題感到茫然。

+0

嗨Sudhir ...你是什麼意思?每個功能都與不同的項目有關。 – Laurent 2013-03-04 07:15:40

+0

':remote => true'有什麼意義? – apneadiving 2013-03-04 07:39:14

+0

@apneadiving我剛剛刪除:remote => true並猜測是什麼? JQuery完全停止響應。我認爲:remote => true恰恰是爲了發揮JQuery的作用。 – Laurent 2013-03-04 07:41:43

回答

0

第一件事.. ID應該永遠是獨一無二的..你有相同的id二元..所以chnage是

... 
<%= link_to "Trusts", "#follows", :id => "trusts_list_follows_button", :remote => true%></td> 
<td><%= link_to "Trusted by", "#followers" , :id => "trusted_list_followers_button", :remote => true %> 
.... 

然後調用點擊事件爲每個按鈕

$(function(){ 
    $("#trusts_list_follows_button").click(function(){ 
    $("#relationship_list").html("<%= escape_javascript(render 'follows') %>"); 
    }); 
    $("#trusted_list_followers_button").click(function(){ 
    $("#relationship_list").html("<%= escape_javascript(render 'followers') %>"); 
    }); 
}); 

您的代碼中存在的問題是,點擊事件是針對相同的按鈕的,因爲您的選擇器是$("#trusted_list_button")。這個選擇其id=trusted_list_button而你的情況是這兩個按鈕按鈕..所以click事件被解僱僅僅第二個按鈕...

+0

嗨,比爾,謝謝你,但第一個元素是「trusts_list_button」,第二個是「trusted_list_button」。 IT有點混亂,所以我改了名字,但問題仍然存在。也許我誤解了你的評論? – Laurent 2013-03-04 07:29:15

0

由於速戰速決試試這個:

$(function(){ 
    $("#trusts_list_button").click(function(){ 
     $("#relationship_list").html("<%= escape_javascript(render 'follows') %>"); 
    }).click(); 
    $("#trusted_list_button").click(function(){ 
     $("#relationship_list").html("<%= escape_javascript(render 'followers') %>"); 
    }).click(); 
}); 

doc ready第一次發生點擊。

0

我最近遇到了這個問題,我確定克隆的元素上存在一個事件 - 但我找不到或刪除事件(雖然我知道它在那裏)...點擊1 - 沒有任何事情,點擊2 - 正常點擊,點擊3 - 點擊兩次(排序)

我的解決方案是再次克隆特定違規元素並使用克隆(此次不克隆事件)替換原始。

$(el).replaceWith($(el).clone());

相關問題