2011-10-28 125 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