2011-08-19 41 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