javascript - 如何将 jQuery 数据变量放入按钮而不是 div 中

标签 javascript jquery

我有一个使用 jquery 的 Rails 站点。我正在将“关注”按钮从用户页面移至搜索显示页面。

这意味着我必须将 javascript 从假设每个页面上只有一个关注按钮的 javascript 更改为可与页面上的许多关注按钮配合使用的 javascript。这些按钮中的每一个都针对搜索结果中的不同用户。

我的旧代码是这样工作的:

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 = $('#friends-data').data();

我希望按钮有自己的数据。这样我的 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());
  });
});

这会打印第一个警报,但不会打印第二个警报。

最佳答案

更改此:

window.alert(this.data());

这样:

window.alert($(this).data());

关于javascript - 如何将 jQuery 数据变量放入按钮而不是 div 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36940320/

相关文章:

javascript - 具有原型(prototype)的 parent 的多重继承

javascript - yarn : Procedure for redeploying JavaScript dependencies to Production Server (usage of `yarn.lock` file)

javascript - 覆盖 native 功能?

jquery - Internet Explorer 中 Bootstrap 模式事件的问题

javascript - 通过 Javascript 或 jQuery 获取显示分辨率

javascript - 使用 jQuery UI datepicker 显示天总数

javascript - 如果你的代码库有 curry 函数,为什么要写闭包?

javascript - JSON 对象的增量编码

jquery - 如何为 jqGrid 高度属性 setGridHeight 应用 css 类?

javascript - 如何使页面脚本识别手动更改的 INPUT 元素值?