繁体   English   中英

jQuery replaceWith不起作用</div>

[英]jquery replaceWith not working with </div>

我一直试图弄清楚这个问题已经好几个小时了。我会先问我一个具体的问题,但是如果我的整体方法是错误的,然后再给您一个更大的认识。

特定问题:我正在尝试将列表项元素替换为一些结束标记。 下面的第一个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水平排列每个组,以创建一些基本的大型菜单功能。 下面的示例与上面的源代码相关。

  • <标头1
  • 项目1
  • 项目2
  • >
  • <标头2
  • 项目1
  • 项目2
  • >

jQuery调整后所需的标记:

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

感谢您的任何反馈。 当我需要诸如此类的信息时,这是我的首选站点,但这是我第一次必须询问!

谢谢,

汤米

结束标记将自动插入。

您可以以某种方式使用.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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM