jquery replaceWith不使用

时间:2013-02-01 22:05:54

标签: jquery replacewith

我一直在努力解决这个问题好几个小时而没有太多运气。我先问一下我的具体问题,但是如果我的整个方法出错了,那就给大家看一下。

具体问题: 我正在尝试用一些结束标记替换列表项元素。下面的第一个IF语句可以工作,第二个IF语句在“html”变量中使用很多值,但是只要我将一个结束div标记粘贴到变量中,替换就不会发生。我无法弄清楚。我已经尝试使用1-2反斜杠转义结束标记中的斜杠并且没有帮助(使用两个反斜杠进行替换,但文本在页面上呈现而不是代码)。

$("li.class1").each(function() {
    var li = $(this);
    var span = li.find("span.class2").text();
    if (span.indexOf("<") == 0) {
        var text = $(this).text();
        text = text.substring(1, text.length);
        li.replaceWith('<li><div><ul><li class="Mheader">' + text + '</li>');
    }
    else if (span.indexOf(">") == 0) {
        var html = '</ul></div></li>';
        li.replaceWith(html);
        alert(html);
    }
});

现在,说了..我注意到FireBug在第一次替换后显示结束标签,即使我还没有插入它们。我希望这只是FireBug很聪明并插入它们因为它们丢失了。

我实际上想要实现的目标: 我们有一个应用程序将一些普通的弹出导航菜单呈现为一个大的,垂直的,无序的列表。我想在此列表中插入一些特殊格式的组名(如下所示),然后使用jquery替换那些特殊格式的组名,以有效地将这些“组”切换为DIV。然后我将使用CSS水平布局每个组,以创建一些基本的超级菜单功能。以下示例与我上面的源代码相关。

  • &LT;标题1
  • 第1项
  • 第2项
  • &GT;
  • &LT;标题2
  • 第1项
  • 第2项
  • &GT;

jquery调整后的所需标记:

<ul>
<li>
    <div>
    <ul>
    <li class=header>header1</li>
    <li>item1</li>
    .....
    </ul></div>
</li>

感谢您的任何反馈。当我需要这样的信息时,这是我的首选网站,但这是我第一次不得不问!

谢谢,

托米

1 个答案:

答案 0 :(得分:0)

自动插入结束标记。

你可以以某种方式使用.wrapInner,或做类似的事情:

html = '';
$("li").each(function() { // I removed the class as I don't know if each li has one or if only headers, etc.
    var li = $(this);
    var span = li.text(); // Same here.. removed the class
    if (span.indexOf("<") == 0) {
        var text = $(this).text();
        text = text.substring(1, text.length);
        html += '<li><div><ul><li class="Mheader">' + text + '</li>';
    }
    else if (span.indexOf(">") == 0) {
        html += '</ul></div></li>';
    } else {
        html += '<li>' + li.html() + '</li>';
    }
});
$('ul').html(html);