在Javascript函数中获取div的最后一个子节点

时间:2013-03-05 15:17:18

标签: javascript jquery

我正在使用一段相当简单的代码并将其包装到一个函数中,代码从div中的项目构建一个滑出菜单。我现在正想从div中找到最后一个孩子:

experimentOne('#experimentOne');

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

但是,这会在日志中返回[]。当我检查宽度,而不是它应该是100px时,它是1420,我猜是窗口宽度。

如果我只是通过编码来获取ID的最后一个孩子,那么一切都很好,但我希望该功能尽可能重用。

感谢。

5 个答案:

答案 0 :(得分:2)

如果您的masterContainer是元素,请尝试此操作:

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

或者如果它是元素id的字符串

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

答案 1 :(得分:1)

masterContainer是一个包含父容器值的变量,因此在构建选择器时需要将它与字符串连接一起使用。

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

或者您可以使用基于上下文的查找

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

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

演示:Fiddle

答案 2 :(得分:1)

    使用“#”选择带有id的
  • 元素
  • 你需要用“>”来定位immediat孩子,[space]定位所有元素的后代

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

答案 3 :(得分: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对象!

答案 4 :(得分:0)

你的连接是错误的。试试这个: $(masterContainer + ' :last-child')