javascript - $(this).data(value) 与 jQuery click() 方法的未定义值

标签 javascript jquery html

在我的 Rails 5 应用程序中,我正在构建一个动态菜单,以根据用户的位置将用户引导至网站的特定部分。当他们点击主页上的菜单项时,会显示一个模式供他们选择我们送货到的四个地点之一。然后,带有 click 方法的函数应该获取 data- 属性并将其插入到 url 路径中以重定向它们。我似乎无法让数据属性通过,即使是硬编码 - 我只是在控制台中得到一个未定义的。

我没有在此处包括模态代码,因为这不是问题所在;它打开并在路径中插入/undefined/undefined/就像控制台一样。我的问题只是获取这个数据值。

_sidebar.html.erb

<div id="ss_menu">
  <% @cat.each do |c| %>
    <div class="ss_button"><%= c.name %></div>
    <div class="ss_content">
      <ul>
        <% c.subcategories.each do |s| %>
          <li>
            <a href="#" 
               data-id="<%= s.id %>" 
               data-category="<%= c.slug %>" 
               data-subcategory="<%= s.slug %>" 
               data-toggle="modal" 
               data-target=".mlc-modal"><%= s.name %></a>
          </li>
        <% end %>
      </ul>
    </div>
  <% end %>
</div>

脚本

<script type="text/javascript" charset="utf-8">
    $(document).on("click", ".ss_button", function () {
        var id = $(this).data('id');
        var category = $(id).data('category');
        var subcategory = $(id).data('subcategory');
        console.log(id);
        console.log(category);
        console.log(subcategory);
        $('.modal-content a').attr('href', function () {
            return this.href + category + '/' + subcategory;
        });
    });
</script>

最佳答案

ss_button元素本身没有任何数据属性。所以,this在那个引用 <div class="ss_button"> 的函数中, 指向一个没有任何数据属性的元素。这就是为什么 $(this).data('id')返回 undefined .

关于javascript - $(this).data(value) 与 jQuery click() 方法的未定义值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48040868/

相关文章:

html - 如何仅使用边框属性设置边框半径

javascript - 如果语句有问题 text();

jquery - onClick 从 div 中删除类

jquery - CSS 过渡不适用于图像

javascript - 如何使用 Jquery 创建自动完成功能?

html - 如何更改选项标签中特定文本的颜色

html - 选择选项箭头,响应位置

javascript - 如何在另一个 Javascript 函数之外调用一个 Javascript 函数?

javascript - 如果你已经在使用一个框架,你应该永远不要写 "plain vanilla"js 吗?

javascript - 如何在 React Navigation 中禁用向后滑动选项或弹出路线?