2016-04-29 9 views
0

jqueryを使用するレールサイトがあります。私は、ユーザーのページから検索表示ページに「フォロー」ボタンを移動しています。ボタンにjQueryデータ変数を取得する方法

これは、javascriptを変更する必要があることを意味します。これは、各ページに1つのフォローボタンがあることを前提としています。これらのボタンのそれぞれは、検索結果の異なるユーザー用です。私が持っていると思ってい

this.data = $('#friends-data').data(); 

HTML::

= content_tag 'div', id: 'friends-data', data: {user_id: current_user.id, friend_id: user.id, is_following: true } do 
= button_tag "Follow", class: 'btn btn-Follow followUser' 

HTML(コンパイル):

<div id="friends-data" data-user-id="2" data-friend-id="8" data-is-following="true"></div> 
<button name="button" type="submit" class="btn btn-follow followUser">Follow</button> 

JSを

私の古いコードは次のように働きましたボタンには独自のデータがあります。この方法では、私のthis.dataはすでにデータになります。私はそれより上のdivからそれを取得する必要はありません。そうすれば、JSは常に最初のユーザーからデータを取得することはありませんが、ボタンに所属するユーザーに関するデータを取得します。

私の問題は、this.data = $(this).data();が機能しないということです。例えば

は、与えられた:

<div id="friends-data" data-user-id="2" data-friend-id="8" data-is-following="true"></div> 
<button name="button" type="submit" class="btn btn-follow followUser" data-user-id="2" data-friend-id="8" data-is-following="true">Follow</button> 

$(document).ready(function(){ 
    $(".followUser").click(function(){ 
    window.alert($('#friends-data').data()); 
    window.alert(this.data()); 
    }); 
}); 

をこれが最初の警告ではなく、第二の印刷。

+1

'this'は' $(この) 'とは異なります。 –

答えて

1

変更この:これで

window.alert(this.data()); 

window.alert($(this).data()); 
関連する問題