jQuery(1.6.4)使用append()添加锚点在IE中不起作用

时间:2011-10-28 09:37:12

标签: javascript jquery internet-explorer append

我在使用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();
    
  5. 正如所料,它在Chrome,FF和Opera中运行良好,但在IE中却没有。

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

    1. 乱搞谚语和语录
    2. 将锚标记简化为最小<a href="../index.html>&nbsp;</a>
    3. 尝试使用其他标记<h2>BlaBla</h2>
    4. 锚标记永远不会初始化为正确的jQuery对象。 h2标签是,但它不会显示在页面上。

      我找到了一种解决方法来对锚标记进行硬编码并修改属性,但这并不是我想要的。 任何想法都非常感谢。

      提前谢谢你, 塞巴斯蒂安

1 个答案:

答案 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)很贵,而且你多次这样做。没有必要一次又一次地做。您只需要执行一次,然后通过变量或链接重复使用它。