jquery.replaceWith()在IE7中与.clone()玩得不好
我使用jQuery创建了一个显示在对话框中的链接TOC。我编写的函数用于查找页面中的所有jquery.replaceWith()在IE7中与.clone()玩得不好,jquery,debugging,internet-explorer-7,replace,clone,Jquery,Debugging,Internet Explorer 7,Replace,Clone,我使用jQuery创建了一个显示在对话框中的链接TOC。我编写的函数用于查找页面中的所有h4,并 为他们提供链接到的ids 添加一些编号显示信息 克隆它们 将克隆变成lis 将内部文本包装到定位标记中 查找定位点向定位点添加单击功能以关闭对话框 将titles和hrefs添加到锚定中,以便链接指向原始h4s 返回到lis 将lis追加到对话框div 然而,在IE7中,克隆的h4s没有被上交lis。在FireFox中工作。在IE7中,一切都像在FireFox中一样发生,只是.replaceWi
h4
,并
- 为他们提供链接到的
sid
- 添加一些编号显示信息
- 克隆它们
- 将克隆变成
sli
- 将内部文本包装到定位标记中
- 查找定位点向定位点添加单击功能以关闭对话框
- 将
s和title
s添加到锚定中,以便链接指向原始href
sh4
- 返回到
sli
- 将
s追加到对话框li
div
h4
s没有被上交li
s。在FireFox中工作。在IE7中,一切都像在FireFox中一样发生,只是.replaceWith()
似乎被忽略了。。。为什么?
看起来像这样:
$('#content h4').each(function(index) {
index = index + 1;
$(this)
.attr('id', 'tutorial_' + index)
.before(function() {
return '<div class="how_to">HOW TO<div><span>' + index + '</span></div></div>';
})
.clone()
.replaceWith("<li>" + $(this).text() + "</li>")
.wrapInner("<a></a>")
.find('a')
.click(function(){
$("#dialog").dialog("close");
})
.attr({
'title': 'jump to ' + $(this).text(),
'href': '#tutorial_' + index
})
.end()
.appendTo('#dialog ol')
});
$('#content h4')。每个(函数(索引){
指数=指数+1;
$(本)
.attr('id','tutorial_uu'+索引)
.在(函数()之前{
返回'HOW TO'+索引+'';
})
.clone()
.replace为(“”+$(this).text()+“ ”)
.wrapInner(“我真的不明白为什么人们如此喜欢克隆……:)
我会做类似的事情
$('#content h4').each(function(index) {
index = index + 1;
$(this)
.attr('id', 'tutorial_' + index)
.before(function() {
return '<div class="how_to">HOW TO<div><span>' + index + '</span></div></div>';
})
.clone()
.html("<li>" + $(this).text() + "</li>")
.wrapInner("<a></a>")
.find('a')
.click(function(){
$("#dialog").dialog("close");
})
.attr({
'title': 'jump to ' + $(this).text(),
'href': '#tutorial_' + index
})
.end()
.appendTo('#dialog ol')
});
$('#content h4')。每个(函数(索引){
指数=指数+1;
$(本)
.attr('id','tutorial_uu'+索引)
.在(函数()之前{
返回'HOW TO'+索引+'';
})
.clone()
.html(“”+$(this.text()+” ”)
.wrapInner(“”)
.find('a'))
。单击(函数(){
$(“对话框”)。对话框(“关闭”);
})
艾特先生({
'title':'跳转到'+$(this).text(),
“href”:“教程”+索引
})
(完)
.appendTo(“#对话框ol”)
});
但那只是我:)
编辑:在阅读了关于replaceWith()的“很多”之后-IE7和IE6似乎永远都存在未解决的错误。因此,我放弃了我的函数,使用你的函数,并将replaceWith
替换为html
-在这种情况下,它以你想要的方式工作,即替换项的html并返回它本身
至于replaceWith,您可能遇到了web与IE7的一个bug;)我真的不明白为什么人们如此喜欢克隆…:)
我会做类似的事情
$('#content h4').each(function(index) {
index = index + 1;
$(this)
.attr('id', 'tutorial_' + index)
.before(function() {
return '<div class="how_to">HOW TO<div><span>' + index + '</span></div></div>';
})
.clone()
.html("<li>" + $(this).text() + "</li>")
.wrapInner("<a></a>")
.find('a')
.click(function(){
$("#dialog").dialog("close");
})
.attr({
'title': 'jump to ' + $(this).text(),
'href': '#tutorial_' + index
})
.end()
.appendTo('#dialog ol')
});
$('#content h4')。每个(函数(索引){
指数=指数+1;
$(本)
.attr('id','tutorial_uu'+索引)
.在(函数()之前{
返回'HOW TO'+索引+'';
})
.clone()
.html(“”+$(this.text()+” ”)
.wrapInner(“”)
.find('a'))
。单击(函数(){
$(“对话框”)。对话框(“关闭”);
})
艾特先生({
'title':'跳转到'+$(this).text(),
“href”:“教程”+索引
})
(完)
.appendTo(“#对话框ol”)
});
但那只是我:)
编辑:在阅读了关于replaceWith()的“很多”之后-IE7和IE6似乎永远都存在未解决的错误。因此,我放弃了我的函数,使用你的函数,并将replaceWith
替换为html
-在这种情况下,它以你想要的方式工作,即替换项的html并返回它本身
至于replaceWith,您可能遇到了web与IE7的一个bug;)该页面脚本中有一些输入错误
第43行:
$('#dialog ol').
你必须删除那个点
第61行:
我不认为};应该在那里!那页脚本有一些打字错误
第43行:
$('#dialog ol').
你必须删除那个点
第61行:
我不认为};应该在那里!不起作用。看.add(“”+$(this.text()+“ ”)
-$(this)
指的是$(“#dialog ol”)
在你写的东西中。那里没有文本。但是我知道你想做什么。我可以得到文本并把它放在变量中,然后把它放在
之间。但这不是我的问题,我想知道为什么我写的东西不起作用。它是不是一个bug,等等……好吧,我只是试图向你展示不同的方法,当你有了它的时候我还编辑了代码。我还看到你把代码放在上面了-这也有错误-在$(内容ol)之后,有两个句号(点)-应该是一个-已经在这里编辑。谢谢你的新策略。我想看看为什么我所做的不起作用…嗯。假设这是一个错误。谢谢你建议的替代路线。不起作用。请看。添加(“”+$(this)。text()+“ ”)
-$(此)
指$('dialog ol'))
在你写的东西中。那里没有文本。但是我知道你想做什么。我可以得到文本并把它放在变量中,然后把它放在
之间。但这不是我的问题,我想知道为什么我写的东西不起作用。它是不是一个bug,等等……好吧,我只是试图向你展示不同的方法,当你有了它的时候我还编辑了代码。我还看到你把代码放在上面了-这也有错误-在$(内容ol)之后,有两个句号(点)-应该是一个-已经在这里编辑。感谢新的策略。我想看看为什么我所做的不起作用…嗯。假设这是一个错误。感谢你建议了另一条路线。哦,那是我在尝试Adam Kiss的解决方案。他更正了。我恢复到了我的原始代码,除了replaceWith()在IE7中被忽略了,就像我第一次说的。哦,那是我在尝试Adam Kiss的解决方案。他纠正了。我恢复到了我的原始代码,这是有效的,除了在IE7中被忽略的replaceWith(),就像我第一次说的。