我有一个非常简单的功能,可以根据屏幕尺寸从引导导航栏中包装或打开徽标。
基本上,在移动设备上,徽标位于左侧,桌面位于中间位置。
这是功能:
var checkLogo;
checkLogo = function() {
var logo, logoId, w;
w = window.innerWidth;
logoId = $('#logo').length;
logo = "<li id='logo'></li>";
if (w < 768) {
if (logoId !== 0) {
$('.navbar-brand').unwrap(logo);
return $('.navbar-brand').insertAfter('.navbar-toggle');
}
} else {
if (logoId === 0) {
$('.navbar-brand').wrap(logo);
return $('#logo').insertAfter('.navbar-nav li:nth-child(2)');
}
}
};
$(document).ready(function() {
return checkLogo();
});
$(window).resize(checkLogo);
正如我所说,这个功能非常简单,实际上可行。
我遇到的问题是打开元素时的问题。它仍然有效,但我得到了这个错误,我不明白为什么。
未捕获错误:语法错误,无法识别的表达式:(...)
你有什么建议吗?
如果我删除了id,则错误消失,但理想情况下我还需要能够附加特定的ID。
由于
答案 0 :(得分:2)
jQuery的unwrap()
只接受一个参数
用于检查父元素的选择器。如果元素是父元素 与选择器不匹配,元素将不会被解包。
传递像<li id='logo'></li>
这样的HTML并不是一个有效的选择器来检查包装元素,如果你想确保只打开那个元素,你就可以
$('.navbar-brand').unwrap('#logo');