0

私はかなり単純なコードを取得して関数にラップしています。コードはdiv内のアイテムからスライドアウトメニューを作成します。私は今、divから最後の子を取得しようとしています:

experimentOne('#experimentOne');

   function experimentOne(masterContainer) {
   var experimentOneMenuButton = $('masterContainer :last-child');
   ... etc

ただし、これはログに[]を返します。幅を確認すると、100pxではなく1420で、ウィンドウの幅だと思います。

IDの最後の子をすべてにコーディングして取得するだけであれば問題ありませんが、関数をできるだけ再利用できるようにしたいと思います。

ありがとう。

4

5 に答える 5

2

masterContainerが要素である場合は、これを試してください。

var experimentOneMenuButton = $(':last-child', masterContainer);

または、要素IDの文字列の場合はこれ

var experimentOneMenuButton = $('#'+masterContainer+' :last-child');
于 2013-03-05T15:20:55.113 に答える
1

masterContainerは親コンテナの値を含む変数であるため、セレクタを構築するときは、文字列連結で使用する必要があります。

var experimentOneMenuButton = $(masterContainer + ' :last-child');

または、コンテキストベースのルックアップを使用できます

var experimentOneMenuButton = $(':last-child', masterContainer);

コンテキストベースのルックアップを利用する2番目のソリューションは、すっきりしているのでお勧めします。

デモ:フィドル

于 2013-03-05T15:21:19.650 に答える
1
  • IDの要素は「#」で選択されます
  • ">"で直接の子をターゲットにする必要があります。[スペース]要素のすべての子孫をターゲットにします

    $('#masterContainer>:last-child');

于 2013-03-05T15:23:08.157 に答える
0

あなたの連結は間違っています。そのようにしてみてください: $(masterContainer + ' :last-child')

于 2013-03-05T15:27:22.493 に答える
0

文字列内のmasterContainerは何もしません。私はそれがすべきだと思います:

$(masterContainer).find(':last-child');

experimentOne('#experimentOne');また、jQueryオブジェクトではなく文字列を送信することに注意してください。それには、が必要experimentOne($('#experimentOne'));になり、次のようになります。

experimentOne($('#experimentOne'));

   function experimentOne(masterContainer) {
   var experimentOneMenuButton = masterContainer.find(':last-child');
   // Note the lack of jQuery wrapper around masterContainer in this version

パラメータまたは関数自体にjQueryオブジェクトを強制するかどうかによって異なります。

于 2013-03-05T15:25:15.193 に答える