无法从车把杆生成的按钮中提取.attr()。

问题描述 投票:0回答:1

我正在为一个涉及Express、Mongoose、Cheerioaxios和Handlebars的家庭作业建立一个网络搜刮器。我的""路由会抓取Mongoose对象,而Handlebars会将它们以单独的卡片形式加载到页面上。一个带有属性的保存按钮被生成 data-id={{_id}}' 在这些卡片中。我试图用jQuery访问属性,当它被按下时,将其保存到另一个集合中,但$(this)返回未定义。

js

    $(document).ready(function () {
        $("#artDiv").on("click", ".save", (event) => {
            event.preventDefault();
            let id = $(this).attr("data-id");

            console.log($(this).data("id"));
            console.log(id);        
        })
    });

html

 <div id="artDiv" class="container">
  {{#obj}}
  {{#each .}}
  {{#if headline}}
  <div id="articleCard" class="card">
    <h5 class="card-header">{{altHead}}</h5>
    <div class="card-body">
      <h5 class="card-title">{{headline}}</h5>
      <p class="card-text">{{desc}}</p>
      <a href="{{link}}" target="_blank" class="btn btn-primary">Visit</a>
      <button data-id="{{_id}}" data-control="saveBtn" type="button" class="btn btn-success save">Save</button>
    </div>
  </div>
  {{/if}}
  {{/each}}
  {{/obj}}
</div>
javascript express mongoose handlebars.js express-handlebars
1个回答
0
投票

如果你想让你的点击元素在 $(this)你不能使用箭头函数。你必须使用 $("#artDiv").on("click", ".save", function (event) { ... });.

© www.soinside.com 2019 - 2024. All rights reserved.