[英]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水平排列每个组,以创建一些基本的大型菜单功能。 下面的示例与上面的源代码相关。
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.