1

Wicket と JQuery の使用に問題があります。ul/li 構造のツリーを構築しています。ただし、Wicket は独自の要素を挿入しますが、これを取り除くことはできません。たとえば、次のような構造です。

<ul>
    <li><input type="checkbox"/></li>
    <li>
      <ul>
        <li><input type="checkbox"/></li>
        <li><input type="checkbox"/></li>
      </ul>
<ul>

最終的に次のようなものが得られます。

<ul>
    <span><li><input type="checkbox"/></li></span>
    <span><li>
      <wicket:panel><ul>
        <span><li><input type="checkbox"/></li></span>
        <span><li><input type="checkbox"/></li></span>
      </ul></wicket:panel>
     </span>
<ul>

したがって、2 番目のコードには、jquery でいくつかの問題を引き起こすガベージが含まれています。 、Wicket フレームワークが引き起こす「構造の例外」 (wicket:panel と span) に対応するのは非常に複雑です。

私がしたいのは、素敵なjqueryスクリプトを見つけた不確定なチェックボックス値を設定できるようにすることだけです:

http://css-tricks.com/indeterminate-checkboxes/

ただし、Wicket が導入する要素をスクリプトに「無視」させる方法や、検証する必要があるチェックボックスを見つけることができるようにスクリプトを適応させる方法が見つかりません。

このような問題を解決するためのクリーンなアプローチは何でしょうか? サンプル ページでテストされた jquery スクリプトが wicket 要素の構造によって機能しなくなるという、同様のケースがさらに発生する可能性があります...

4

2 に答える 2

4

マークアップ ファイルを Wicket ID とともに表示します。あなたが示した出力から、私はそれを推測します:

  1. <wicket:panel>出力htmlで-これを取り除くには、手順setStripWicketTags(true) http://ci.apache.org/projects/wicket/apidocs/6.x/org/apache/wicket/settings/IMarkupSettings.html#setStripComments%28boolean%29を使用します

  2. 出力 HTML のスパンを取り除くには、ウィケット ID をスパン要素にアタッチしていると思います。要素を使用する必要はありません。<span>ウィケット ID を要素に直接追加できます<li>: <li wicket:id="blah"></li>。最終的に、に接続されたウィケット ID で、<span>を呼び出すことができますsetRenderBodyOnly(true)。ただし、特に ajax を使用する場合は、これをお勧めしません。これが役立つかどうかはわかりません。未加工のマークアップ ファイルを確認する必要があります。

于 2013-06-12T20:42:29.750 に答える
0

次のように言われているため、JQuery findを使用できます。

.children() メソッドは .find() とは異なり、.children() は DOM ツリーを 1 レベル下に移動するだけですが、.find() は複数のレベルを下に移動して子孫要素 (孫など) も選択できます。

li簡単に検索できるように、ネストされた要素にいくつかのクラスセレクターまたは ID を配置することもできます。

于 2013-06-12T18:59:58.750 に答える