我正在使用一段相当简单的代码并将其包装到一个函数中,代码从div中的项目构建一个滑出菜单。我现在正想从div中找到最后一个孩子:
experimentOne('#experimentOne');
function experimentOne(masterContainer) {
var experimentOneMenuButton = $('masterContainer :last-child');
... etc
但是,这会在日志中返回[]。当我检查宽度,而不是它应该是100px时,它是1420,我猜是窗口宽度。
如果我只是通过编码来获取ID的最后一个孩子,那么一切都很好,但我希望该功能尽可能重用。
感谢。
答案 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)
你需要用“>”来定位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')