0

Html 要素には、プレフィックスとしての名前空間とポストフィックスとしてのインクリメントされたインデックスから構成される、複雑で一意の ID が含まれます。

id のワイルドカード式を使用してみます。

名前空間なしで簡単な方法を使用する場合、それはうまく機能します:

$j("[id*=service_selected_]").click(function(){
...

一意性を維持するために、id 内に名前空間部分を提供する必要がありますが、この方法では解決されません。

var selId = "'" + '[id*=' + namespace + '_service_selected_]' + "'";

$j(selId).click(function(){
...

.jsp 部分の下:

        <c:forEach var="package" items="${packages.page}" varStatus="status">
            <tr>
                <td>
                    ${package.name}
                </td>
                <td id="<portlet:namespace/>_service_price_${status.index}">${package.price}</td>
                <td >
<input type="checkbox" name="service_id" value="${package.id}" id="<portlet:namespace/>_service_selected_${status.index}">
                </td>
            </tr>
        </c:forEach>
4

4 に答える 4

4

さて、私たちは皆、同じコードの異なるバージョンを提案しているので、これが私のものです:

var namespace = 'test';
var id = '_service_selected_';
$(["[id^=", namespace, "_", id, "_]"].join(''));

これまでに投稿されたすべての提案について、いくつかの速度テストも行いました。私のものはたまたま Firefox と Chrome で最速であり、IE8 で 2 番目に優れています。Josh Stodola のはまったく機能しません。

テスト スイートは次のとおりです: http://jsbin.com/igate ( http://jsbin.com/igate/editで編集可能)

結果は次のとおりです。

ファイアフォックス

select_Phil 37 ms 36 selected
select_Ghommey 120 ms 36 selected
select_Josh_Stodola 1077 ms 0 selected
select_brianpeiris 31 ms 36 selected

クロム

select_Phil 17 ms 36 selected
select_Ghommey 108 ms 36 selected
select_Josh_Stodola 290 ms 0 selected
select_brianpeiris 15 ms 36 selected

IE8

select_Phil 69 ms 36 selected
select_Ghommey 300 ms 36 selected
select_Josh_Stodola 1632 ms 0 selected
select_brianpeiris 73 ms 36 selected
于 2009-10-09T00:46:40.640 に答える
2

startsWith セレクターを使用して要素の名前空間を取得し、それに対してクエリを実行し一致を取得します...

var namespace = "test";
var itemspace = "_service_selected_";

var ns = $("[id^=" + namespace + "]");
var nsItems = $("[id*=" + itemspace + "]", ns);
于 2009-10-08T15:11:07.013 に答える
2

どうですか

var selId = "[id*=" + namespace + "_service_selected_]";
$j(selId).click(function(){
...

引用符が多すぎて混乱したと思います。

于 2009-10-08T14:57:33.063 に答える
1

2回検索するかもしれません

$j("[id*=" + namespace + "]").filter("[id*=service_selected_]").click(function(){
于 2009-10-08T15:00:40.140 に答える