Java 如何将动态参数传递给jquery函数

Java 如何将动态参数传递给jquery函数,java,javascript,jquery,html,jstl,Java,Javascript,Jquery,Html,Jstl,我想向jquery onClick事件传递一些动态参数。之前,我使用了以下HTML和JavaScript: /*JavaScript*/ func1(参数1,参数2){ //做点什么 } 参数param1和param2来自后端代码,是动态的。我如何得到这个在这里并不重要 使用jQuery之后,我有了以下HTML和JS: $(文档).ready(函数(){ $(“#link123”)。单击(函数(){ var param1=$(“#param1”)[0]。值; var param1=$(

我想向jquery onClick事件传递一些动态参数。之前,我使用了以下HTML和JavaScript:


/*JavaScript*/
func1(参数1,参数2){
//做点什么
}
参数
param1
param2
来自后端代码,是动态的。我如何得到这个在这里并不重要

使用jQuery之后,我有了以下HTML和JS:


$(文档).ready(函数(){
$(“#link123”)。单击(函数(){
var param1=$(“#param1”)[0]。值;
var param1=$(“#param1”)[0]。值;
func1(参数1,参数2);
});
});
func1(参数1,参数2){
//做点什么
}
函数func1和以前一样存在。

我对这个解决方案不满意(将参数作为内联隐藏值传递)。在这种情况下,还有什么更好的方法可以将动态参数传递给jQuery?

您可以像以前一样内联这些参数

  $("#link123").click(function() {
    func1(${param1}, ${param2});
  });

也就是说,您的PHP(或其他)会生成带有已替换参数值的javascript。

为此,建议使用数据属性。使用:

<input data-param1="${param1}" />

我假设您正在尝试将变量值从后端脚本语言传递到Javascript?一种可能的方法是将它们直接输出到javascript

<script language='JavaScript'>
//it's a good idea to have all those vars collected in a single object in order to not overpopulate the global scope
var scriptOutput = {
    param1 : ${param1},
    param2 : ${param1}
}
$(document).ready(function() {
    $("#link123").click(function() {
        func1(scriptOutput.param1,scriptOutput.param2);
    });
});
</script>

//将所有这些变量收集到一个对象中是一个好主意,这样不会使全局范围过多
变量脚本输出={
param1:${param1},
param2:${param1}
}
$(文档).ready(函数(){
$(“#link123”)。单击(函数(){
func1(scriptOutput.param1,scriptOutput.param2);
});
});

${param1}实际上是JSTL表达式在我的例子中,${param1}是由框架从java代码发送到jsp的JSTL表达式。这个变量是否也可以像以前一样在javascript中访问。Jsp文件可以读取这些变量,但javascript文件也可以读取吗?哦,我以为这是PHP语法。我对JSP不太熟悉。对不起,如果这是一个初学者愚蠢的问题。数据属性是HTML5标准,在旧的浏览器中也适用吗?这个特殊的功能一直支持到IE7(坦率地说,可能也是6,没有检查)。这一切都是由于jQuery在其方面处理所有的标准化问题,所以您不必担心太多。有关详细信息,请参阅。@Slavic-数据属性确实向后兼容。不知道有多落后,但肯定是IE6,甚至更老。关闭妄想症
<script language='JavaScript'>
//it's a good idea to have all those vars collected in a single object in order to not overpopulate the global scope
var scriptOutput = {
    param1 : ${param1},
    param2 : ${param1}
}
$(document).ready(function() {
    $("#link123").click(function() {
        func1(scriptOutput.param1,scriptOutput.param2);
    });
});
</script>