无法调用动态生成复选框的jquery onclick

无法调用动态生成复选框的jquery onclick,jquery,jsp,Jquery,Jsp,在我的jsp文件中 $(文档).ready(函数(){ 警报(“内部”);//这会打印 函数addToCompare(productID){alert(“productID”);//这不正确 } }); 添加以比较您正面临范围问题,您的功能范围有限 选项1:将函数移到文档就绪回调之外 function addToCompare(productID){ alert(productID); } $(document).ready(function(){ /* to do */ });

在我的jsp文件中

$(文档).ready(函数(){
警报(“内部”);//这会打印
函数addToCompare(productID){alert(“productID”);//这不正确
}
});


添加以比较
您正面临范围问题,您的功能范围有限

选项1:将函数移到文档就绪回调之外

function addToCompare(productID){
  alert(productID);
}

$(document).ready(function(){
   /* to do */
});
选项2:将函数公开到全局范围

$(document).ready(function(){
  function addToCompare(productID){
    alert(productID);
  }
  window.addToCompare = addToCompare; /* exposed */
});
编辑:

未捕获参考错误:未定义P0001。P0001是productData.productID的值

您需要使用
\“
或仅使用
'

选项1:
onclick=“addToCompare(\“${productData.productID}\”;“


选项2:
onclick=“addToCompare('${productData.productID}');“

您正面临范围问题,您的功能范围有限

选项1:将函数移到文档就绪回调之外

function addToCompare(productID){
  alert(productID);
}

$(document).ready(function(){
   /* to do */
});
选项2:将函数公开到全局范围

$(document).ready(function(){
  function addToCompare(productID){
    alert(productID);
  }
  window.addToCompare = addToCompare; /* exposed */
});
编辑:

未捕获的引用错误:未定义P0001。P0001是productData.productID的值

您需要使用
\“
或仅使用
'

选项1:
onclick=“addToCompare(\“${productData.productID}\”;“


选项2:
onclick=“addToCompare(“${productData.productID}”);”

这里发生了一大堆事情

您描述的问题是由于函数addToCompare在创建HTML时超出了范围,这不仅是因为它是在本地向
onReady
函数声明的,而且在处理HTML时它几乎肯定不存在

您还将给自己带来麻烦,因为JSP在解释
addToCompare(${productData.productID})
时可能不会添加引号。此外,将元素的ID放在onClick处理程序中是多余的,因为
这个
将在处理程序中设置,更不用说在HTML中设置onClick处理程序被认为是一个错误

要解决这些问题,您可以在文档/窗口范围中声明函数,然后在文档准备就绪时将其附加到产品的单击处理程序复选框

由于您的业务逻辑不需要DOM<代码> ID<代码>属性,您可能需要考虑将产品ID作为纯数据属性提供,这有助于保持层之间的分离。

函数addToCompare(){
console.log(“产品ID:+this.ID”);
log(“产品ID:+this.dataset.productId”);
}
$(函数(){
$('.productCheckbox')。单击(添加比较);
console.log(“文件准备就绪”);
});


添加以进行比较
这里发生了一大堆事情

您描述的问题是由于函数addToCompare在创建HTML时超出了范围,这不仅是因为它是在本地向
onReady
函数声明的,而且在处理HTML时它几乎肯定不存在

您还将给自己带来麻烦,因为JSP在解释
addToCompare(${productData.productID})
时可能不会添加引号。此外,将元素的ID放在onClick处理程序中是多余的,因为
这个
将在处理程序中设置,更不用说在HTML中设置onClick处理程序被认为是一个错误

要解决这些问题,您可以在文档/窗口范围中声明函数,然后在文档准备就绪时将其附加到产品的单击处理程序复选框

由于您的业务逻辑不需要DOM<代码> ID<代码>属性,您可能需要考虑将产品ID作为纯数据属性提供,这有助于保持层之间的分离。

函数addToCompare(){
console.log(“产品ID:+this.ID”);
log(“产品ID:+this.dataset.productId”);
}
$(函数(){
$('.productCheckbox')。单击(添加比较);
console.log(“文件准备就绪”);
});


Add to compare
本地函数定义了
addToCompare
,但从未调用,我在jsp文件中调用它。刚刚附加了代码。sorrylocal函数
addToCompare
已定义,但从未调用。我在jsp文件中调用它。刚刚附加了代码。对不起,我如何在里面获取productID。单击方法?该复选框是动态生成的,必须将用户选择的产品ID存储在会话/cookie中。这就是为什么我需要它在我的。单击方法或/addToCompare@Aditi你可能不想使用<代码> ID <代码>这里,考虑使用<代码>数据< /代码>(也显示)谢谢你的信息。这真的很有帮助。我如何在里面获取productID。单击方法?该复选框是动态生成的,必须将用户选择的产品ID存储在会话/cookie中。这就是为什么我需要它在我的。单击方法或/addToCompare@Aditi你可能不想使用<代码> ID <代码>这里,考虑使用<代码>数据< /代码>(也显示)谢谢你的信息。这真的很有帮助。