jQuery(1.6.4)使用append()来添加锚不工作在IE

jQuery(1.6.4) using append() to add anchor does not work in IE

本文关键字:IE 添加 工作 append 使用 jQuery      更新时间:2023-09-26

我在IE中使用append()函数时遇到了麻烦。

我想做的是:

  1. 将锚标记附加到body元素
  2. 将modalwindow插件绑定到锚标记
  3. 触发锚标记上的click事件以打开模态窗口
  4. 删除之后的锚标记

    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中却不行。

我已经尝试解决这个问题了:

  1. 乱用撇号和引号
  2. 将锚标记简化为最小<a href="../index.html>&nbsp;</a>
  3. 对另一个标签<h2>BlaBla</h2>
  4. 进行相同的操作

锚标记永远不会初始化为一个合适的jQuery对象。h2标签是,但它不会显示在页面上。

我已经找到了一个解决方法来硬编码锚标记和修改属性,但这不是我真正想要的。如有任何意见,不胜感激。

提前谢谢你,塞巴斯蒂安。

我希望你的代码看起来更像这样:

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)是昂贵的,你做了很多次。没有必要一次又一次地做这件事。您只需要做一次,然后通过变量或链接重用它。