jquery .replaceWith()在IE7中与.clone()不一致

时间:2010-01-24 14:51:04

标签: jquery debugging internet-explorer-7 replace clone

我正在使用jQuery创建一个出现在对话框中的链接TOC。我写的这个函数找到了页面中的所有h4

  • 让他们id链接到
  • 添加了一些编号显示信息
  • 克隆他们
  • 将克隆变为li s
  • 将内部文本包装在锚标记
  • 发现锚点向锚点添加点击功能以关闭对话框
  • titlehref添加到主页,以便链接指向原始h4 s
  • 返回li s
  • li附加到ol对话框中div

但是,在 IE7 中,克隆的h4未进入li。适用于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')
 });

行动于:http://f1shw1ck.com/jquery_sandbox/tutorials.html

2 个答案:

答案 0 :(得分:1)

我真的不明白人们为什么如此喜欢克隆...... :)。

我会做像

这样的事情
$('#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')
 });

但那只是我:)。

编辑:在阅读关于replaceWith()的“很多”之后 - IE7&amp; IE6自......永远。所以我放弃了我的功能,拿走你的功能并用replaceWith替换html - 在这种情况下你可以按照你想要的方式工作,即替换item的html并返回自己。

至于replaceWith,你可能遇到了网络与IE7之一的错误;)

答案 1 :(得分:0)

该页面脚本中有一些拼写错误

http://f1shw1ck.com/jquery_sandbox/tutorials.html

第43行:

$('#dialog ol').

你必须删除那个点

第61行:

我不认为}); 应该在那里!