我在使用IE的append()函数时遇到了麻烦。
我要做的是以下内容:
之后删除锚标记
if($('a#' + id).length == 0){
$('body').append('<a id=\"' + id + '\" href=\"' + gJsAppBasePath + url + '\" class=\"iframe\" title=\"' + title + '\"><\a>');
$('a#' + id).fancybox({
'hideOnContentClick': false,
width: width,
height: height
});
}
$('a#' + id).click();
$('a#' + id).remove();
正如所料,它在Chrome,FF和Opera中运行良好,但在IE中却没有。
我已经尝试解决这个问题:
<a href="../index.html> </a>
<h2>BlaBla</h2>
锚标记永远不会初始化为正确的jQuery对象。 h2标签是,但它不会显示在页面上。
我找到了一种解决方法来对锚标记进行硬编码并修改属性,但这并不是我想要的。 任何想法都非常感谢。
提前谢谢你, 塞巴斯蒂安
答案 0 :(得分:1)
我希望您的代码看起来更像这样:
var anchor = $('#' + id);
if(anchor.length === 0){
anchor = $('<a id=\"' + id + '\" href=\"' + gJsAppBasePath + url + '\" class=\"iframe\" title=\"' + title + '\"><\a>');
$('body').append( anchor );
anchor.fancybox({
'hideOnContentClick': false,
width: width,
height: height
});
}
anchor.click().remove();
使用像element#id
这样的选择器要慢得多#id
。在IE的某些版本中,它似乎也存在问题。
同样$('a#' + id)
很贵,而且你多次这样做。没有必要一次又一次地做。您只需要执行一次,然后通过变量或链接重复使用它。