javascript - 在 onclick 中传递动态对象 - JavaScript/jQuery

标签 javascript jquery html dom

我想在 onclick jQuery 中传递一个动态对象。请检查下面的代码片段,其中我获取的对象 product 值为 undefined。有人可以帮助我了解如何在 JavaScript/jQuery 中传递和接收对象值吗?

var hpc = "";

function handleProductsClick(e, product) {
  debugger;
  alert(product && JSON.stringify(product));
}

function buildProducts(products) {
  var bp = '';
  hpc = handleProductsClick.bind(products[i]);
  for (var i = 0; i < products.length; i++) {
    bp += '<li onclick="hpc(event)">' + products[i].value + '</li>';
  }
  $("#products").html(bp);
}

function getProductsFromApi() {
  var products = [{
      key: 1,
      value: "Apple"
    },
    {
      key: 2,
      value: "Android"
    }
  ];
  buildProducts(products);
}

getProductsFromApi();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul id="products"></ul>

最佳答案

尝试使用 Javascript 中的事件监听器正确附加监听器,而不是内联 HTML 属性(这与 eval 一样糟糕)。另外,当您使用bind时,第一个参数是提供给函数的this值; .bind第二个参数对应于另一个函数中的第一个参数。

function handleProductsClick(product) {
  console.log(product && JSON.stringify(product));
}

function buildProducts(products) {
  products.forEach(product => {
    const li = $('<li>' + product.value + '</li>');
    li.on('click', handleProductsClick.bind(null, product));
    $("#products").append(li)
  });
}

function getProductsFromApi() {
  var products = [{
      key: 1,
      value: "Apple"
    },
    {
      key: 2,
      value: "Android"
    }
  ];
  buildProducts(products);
}

getProductsFromApi();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul id="products"></ul>

关于javascript - 在 onclick 中传递动态对象 - JavaScript/jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50564186/

相关文章:

javascript - 查找父浏览器或同级浏览器窗口

Javascript:当我用 Javascript 附加内容时,我的 <p> 内容没有出现

javascript - 当用户在 HTML 选择中选择当前选项时是否可以触发 JavaScript?

javascript - 当边界发生变化时,如何向 Google map 动态添加点?

javascript - 编码无法发送到 API Node JS 的奇怪字符

javascript - 如何使用 OAuth2 从 linkedin 获取最近的公司更新

javascript - 如何修改 Elasticsearch 文档的 _source 字段

javascript - Firebase promise - Query.once 失败 : Was called with 1 argument. 预计至少 2

jquery - 是否可以使用 jQuery 的 .attr ("href", value) 方法对 <a> 标签执行 XSS 攻击?

javascript - 在 Javascript 中的表格单元格内插入元素