2011-08-19 39 views
1

我使用jQuery选择以下如何使用JSTL VAR在jQuery选择

$("#selectedQuery td input:radio").attr('checked', true); 

哪里selectedQuery

<c:set var="selectedQuery" value="${dataRequestForm.queryMasterId}" /> 

我测试用硬编码值选择一个JSTL变量声明,它的工作很好,但与selectedQuery一起使用时没有运气。
我们如何在Jquery中使用JSTL <c:set> var?有什么解决办法吗?

回答

4

在JSP:

<c:set var="selectedQuery" value="${dataRequestForm.queryMasterId}" /> 

<script> 
    $("#${selectedQuery} td input:radio").attr('checked', true); 
</script> 
+0

它在IE工作,但在Mozilla(3.6和4)。 – xyz

+1

什么是生成的标记? –

+0

对不起,我迟到了,最近两天离线。这里是生成脚本'$(“#270 td input:radio”)。attr('checked',true);'。 '270'是'selectedQuery'。 – xyz

2

我做的东西一样,所有的时间。 JSP解析器不知道或关心<script>标记(不管是否使用jQuery)和JSP页面中的任何其他内容之间的差异。

应该正常工作,如果你这样做:

<c:set var="selectedQuery" value="${dataRequestForm.queryMasterId}" /> 

... 

<script> 
    $("#${selectedQuery} td input:radio").attr('checked', true); 
</script> 

注意,这需要你的jQuery选择的<script>元素在同一页/ JSP范围内为您<c:set>。如果它们不在同一个范围内,那么当然这是行不通的。

12

将JSTL代码与JavaScript混合可能导致您的代码变得非常混乱。如果这是不可避免的,我在一个地方设置的JavaScript变量的所有我的JSTL变量:

<c:set var="selectedQuery" value="${dataRequestForm.queryMasterId}" /> 
<script type="text/javascript"> 
    //NOTE: we are sure 'selectedQuery' does not contain any double-quotes, 
    // but most values will need to be escaped before doing this. 
    var selectedQuery = "${selectedQuery}"; 

    // etc. 
</script> 

... 

<script type="text/javascript"> 
    $("#" + selectedQuery + " td input:radio").attr('checked', true); 
</script> 
+0

+1,这是一个很好的建议。 –

+0

感谢您的建议。一定会尽量避免它:) – xyz