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);

我会推荐第二种解决方案,它使用上下文基础查找,因为它更整洁。

演示:小提琴

于 2013-03-05T15:21:19.650 回答
1
  • 使用“#”选择具有 id 的元素
  • 您需要使用“>”来定位直接子级,[space] 定位元素的所有后代

    $('#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 回答