jquery unwrap - 无法识别的表达式

时间:2016-11-14 21:05:26

标签: jquery

我有一个非常简单的功能,可以根据屏幕尺寸从引导导航栏中包装或打开徽标。

基本上,在移动设备上,徽标位于左侧,桌面位于中间位置。

这是功能:

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。

由于

1 个答案:

答案 0 :(得分:2)

jQuery的unwrap()只接受一个参数

  

用于检查父元素的选择器。如果元素是父元素   与选择器不匹配,元素将不会被解包。

传递像<li id='logo'></li>这样的HTML并不是一个有效的选择器来检查包装元素,如果你想确保只打开那个元素,你就可以

$('.navbar-brand').unwrap('#logo');