2011-10-28 85 views
0

我真的无法在IE中使用append()函数。jQuery(1.6.4)使用append()添加锚点在IE中不起作用

我所试图做的是以下几点:

  1. 追加锚标记body元素
  2. 绑定modalwindow插件锚标记
  3. 消防锚标记上的点击事件打开模态窗口
  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. 混乱与周围的apostrophs和报价
  2. 简化锚标记,以最小<a href="../index.html>&nbsp;</a>
  3. 尝试同样与另一个标签<h2>BlaBla</h2>

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

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

谢谢你在前进, 塞巴斯蒂安

+0

如果在加载DOM后添加了链接,则使用单击将不起作用,因为它无法将点击事件附加到尚未存在的内容。所以你需要使用LIVE并将click事件绑定到该事件上。你可以复制更多的脚本/ html,这样我可以重新创建问题。 –

+0

id是什么样的? – epascarello

+0

@espascarello:该id可以是一个文字字符串。 –

回答

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)是昂贵的,你可以多次操作。没有必要一次又一次地做。你只需要做一次,并通过变量或链接重用它。

+0

当然你是对的,但我仍处于设计阶段。起初,我只是想让它工作;)但无论如何,谢谢。 –

+0

你是否尝试了上面的代码,并从选择器中删除'a'? – epascarello