javascript - 在 each() 的 div 中访问输入的值

标签 javascript jquery html each

我有一些代码允许用户像这样将新手机添加到列表中

const addPhone = async (phone) => {
  $('.phone-list').append(`
  <div class='phone-div'>
    <table">
    <tbody>
      <tr>
        <td">
            <p>
              <input class='type' type='text' value='${phone.type}'></input>
            </p>
            <p>
              <input class='detail' type='text' value='${phone.detail}'></input>
            </p>
        </td>
      </tr>
    </tbody>
  </table>
</div>);
};

每次用户添加新手机时,都会将一个新的手机 div 添加到列表中并出现在屏幕上。

现在,当用户点击提交按钮时,我想从每个 phone-div 中读取数据,创建一个对象并将该 obj 插入一个数组,然后我可以将其作为 JSON 发送到我的 API 进行处理……目前我我正在尝试使用它

$(document)
  .on('click', '#submit', async () => {
    const phoneArray = [];
    $('.phone-div').each((i) => {
      console.log($(this).find('.type'));// returns undefined
      console.log($(this).find('.detail'));// returns undefined
    });
  });

我怎样才能把类型和细节放在一个obj中,然后把它推到一个数组中,然后我可以像这样将它发送到服务器

phoneArray.push({
    type: $(this).find('.type').val(),
    detail: $(this).find('.detail').val(),
})

最佳答案

您正在 .each() 中使用箭头函数对元素进行处理,它没有自己与 this 关键字的绑定(bind)。考虑将其替换为正常功能。

$(document).on('click', '#submit', async () => {
  const phoneArray = [];

//—————————————————————vvvvvvvv——      
  $('.phone-div').each(function() {
    console.log($(this).find('.type'));
    console.log($(this).find('.detail'));
  });
});

关于javascript - 在 each() 的 div 中访问输入的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54427058/

相关文章:

javascript - 如何防止由盒子阴影引起的悬停状态持续切换?

javascript - 使用 jQuery 从最近的范围获取文本

javascript - 在比较昂贵的 JavaScript 中合并数组的最快方法是什么?

javascript - select2 正确显示粗体文本,但在键入时,粗体变成了 html 标签

javascript - <hr> 在 div 之间

javascript - window.history.back() 在 Chrome 中不工作,在 Mozilla 中工作

html - 菜单右箭头在悬停时隐藏

html - CSS 过渡的视差效果

javascript - DOM 之外的浏览器 Javascript 中的自定义事件发射器/消费者

javascript - Bootstrap 表跟随 div 内的滚动