“clone()”在ie6中无法工作
`clone()` not working in Internet Explorer 6
我试图克隆一个元素,并将其附加到另一个子jQuery语句:
$(userListJId).clone().appendTo(tempOwnJString);
其中userListJId
和tempOwnJString
为元素的id。
以上代码行在Internet Explorer 7和更高版本中工作正常,但在Internet Explorer 6中似乎不起作用。
可能的原因是什么?
我在IE6上使用了clone(),所以这应该不是问题。
也许你正在创建无效的HTML, IE6比IE7更宽松,会抱怨这个问题。
你能给我们看看你的代码和jQuery的版本吗?
你问这个问题很有趣,因为我有一个非常相似的问题(尽管它影响了IE7,可能也影响了IE6)。
另外,不确定你是否做了一些特殊的(即定义变量),但也许你应该把对象称为$('# userlistid ')而不仅仅是元素名称。同样,我无法看到代码的其余部分,因此您可能已经在文档之外定义了这些变量。*范围。
基本上,在IE中,对象创建后某些属性不能修改,例如ID属性。
解决方法是不克隆对象,至少通过.clone(),而是将您希望克隆的对象的外部HTML作为字符串,并对id属性执行regex .replace(),然后将修改后的HTML附加到tempOwnJString中。
IE中的另一个问题是,有时(通常?)当它解析HTML时,如果属性值只包含字母数字字符,它不会在属性值周围加上引号,所以在你的正则表达式模式中要注意这一点。
下面是我使用的一些代码示例:
if ($.browser.msie === true)
{
//unfortunately jQuery doesn't have an outerHTML function, so this is a hacky work around
templateHTML = $("#activityTemplate").clone().wrap('<div>').parent().html();
newHTML = templateHTML.replace(/id'='w+/ig, 'id='+jsonObj.ContactLogID);
$(newHTML).prependTo($("#activityContainer"));
// in case i need to refer to newly created object
clone = $("#"+jsonObj.ContactLogID);
}
再次,我不能肯定地说,如果这是你的问题,但与您提供的信息和没有任何调试信息(IE6并没有真正提供)这是最好的猜测。
与@Foxtrot所说的一样,您需要确保在克隆元素上设置了id,否则会使IE6崩溃。毕竟,所有浏览器都遵循id必须唯一的标准。当你违反这一点时,它们的行为会有所不同。你正在经历变化。
举个简单的例子:
var clone = $(userListIJD).clone();
clone[0].id = 'somethingElse'; // use a formula here, as presumably this is run over and over
// proceed with appending the clone
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- 使用法语字母的正则表达式验证在IE6中不工作
- :悬停不工作在IE6后dd_迟来的透明.png修复(帮助?)
- “clone()”在ie6中无法工作
- 滚动回顶部,在IE6中不工作
- CSS不能在IE6-7中工作
- IE6兼容性.页面工作得很好,但在IE6
- backbone.js路由器不能在IE6上工作
- 鼠标悬停在ie6中不工作
- 勾选复选框,使提交按钮在IE6/7中不工作
- jquery不能在IE6中工作
- 警告消息在IE6-7-8中不起作用,但在IE9和Mozilla中它工作得很好
- 如果我点击一个按钮来打开一个弹出式表单,代码就不能在IE6上工作
- parenNode.replacecchild不能在IE6中工作
- windows .history.go(-1)在ie6中不工作
- window.open()在IE6和IE7中不工作
- & # 39;身体onload # 39;不能在IE6中工作
- 两个jQuery脚本不能在IE6上同时工作