Excelのフリーズペインでテーブルの行または列をロックするjQueryプラグインを構築しようとしています。(これには他にも多くの優れた解決策がありますが、さまざまな理由でどれもうまくいきませんでした。テーブルがモーダルポップアップ内にあることに関係があると思います。しかし私は逸脱します。)
この一環として、プラグインオプションで指定された、特定のテーブルの最初のn行または列を選択しようとしています。問題は、一部の行に他のネストされたテーブルが含まれていることです。残念ながら、これについては何もできません。だから私の質問は、どうすれば<tr>
テーブル内の最初のレベルのsだけを取得するのですか?.children('tr')
行が必ずしもテーブルの直接の子であるとは限らないため、使用が常に機能するとは限りません。<thead>
または(理想的には)ユーザーが包含要素でプラグインを呼び出すことができる可能性があり、それを見つけるのに十分賢いはずです。その中のテーブル。
編集:実際、IDでテーブルを選択する必要がある場合、2番目のビットは機能しないと考えています。しかし、プラグインをテーブルでのみ使用するように依頼するのはそれほど多くないと思います。
つまり、特定の包含要素の直接の子である場合とそうでない場合がある、テーブル行の最初のレベルのみを選択するにはどうすればよいですか?
この答えの後半に基づいて私がこれまでに思いついたのは、これでした:
$el.find('tr:not(tr tr):lt('+base.options.rows+')')
および列の場合:
$el.find('tr:not(tr tr)').find('(td,th):lt('+base.options.columns+')')
しかし、それはひどく長くて不格好なようで、私はそれを行うためのより短く/よりクリーンな方法があるかどうか疑問に思っています。または、単純な古いjavascriptを使用する方法はありますか?
編集2: どうやらセレクターバージョンは実際には.not()よりも高速です。私へのニュース。