2011-04-02 68 views
0

工作,我覺得有什麼不對我的選擇,讓我的jQuery彈出腳本不能工作在IE,(FF和鉻是OK)jQuery的彈出功能無法在IE

編輯:在IE中發生的事情是,淡入淡出顯示但不彈出。

javasctipt

$(document).ready(function(){ 

    $("a[name*='add-ad-to-']").click(function() { 
     var divname= this.name; 
     $("#"+divname).slideDown("slow"); 

     $('body').append('<div id="fade"></div>'); 
     $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn(); 

     return false; 
    }); 


}); 

HTML(動態生成的,可能沒什麼,因爲FF錯在那裏和鉻正常工作)

//the link 
     echo'<a class="noul" name="add-ad-to-'.$value.'" href="#">Link</a>'; 

    //the popup 
     echo'<div class="box-add lucida" id="add-ad-to-'.$value.'" style="display:none;"> 

      //content 

     </div>'; 

編輯:

這裏是CSS,但我不認爲那就是問題

#fade {display:none;background:#000;position: fixed; left: 0; top: 0;width: 100%; height: 100%;opacity: .80;z-index: 9999;} 
.box-add{position:absolute;left:110px;top:-140px;z-index:99999;padding:30px 40px 10px 40px;background-color:#FFF;border:5px solid #888;text-align:left;color:#555;font-size:11px;font-weight:normal;line-height:22px;width:500px;} 
+0

你使用的是什麼版本的IE? – 2011-04-02 11:26:22

+0

版本8.0.7600 – Joseph 2011-04-02 11:37:48

回答

0

我懷疑在a元素上namediv上的id使用相同的值時會遇到問題。建議增加東西的名稱確定iddiv時,如:

$("#div-"+divname).slideDown("slow"); 

(並相應地改變課程的HTML。)

這是因爲IE has issues with conflating namespaces,而且往往傾倒name S IN與id s。例如,在try this example Chrome或Firefox與IE:

HTML:

<a name='foo'>This is the foo anchor</a> 
<div id='foo'>This is the foo element</div> 
<a name='bar'>This is the bar anchor</a> 

JavaScript的:

var foo = document.getElementById('foo'), 
    bar = document.getElementById('bar'); 
display("foo.tagName = " + foo.tagName); 
display("bar.tagName = " + (bar ? bar.tagName : "(none)")); 

正確的輸出:

foo.tagName = DIV 
bar.tagName = (none)

( 「對象」 在bar的問題是null。)

IE6和IE7的輸出:

foo.tagName = A 
bar.tagName = A

document.getElementByIdname S於他們忽略了a的,但它不會對IE6或IE7,所以IE,而不是拿起div的錨。

+0

不幸的是它沒有工作,我有另一個類似的腳本與IE瀏覽器工作,所以我不能找出它://索引。PHP nyheter \t $( 「一[名* = '箱nyhet - ']」)點擊(函數(){ \t VAR divname = this.name; \t $( 「#」 + divname).slideDown( 「slow」)。這一個工作正常:兄弟姐妹()。slideUp(「slow」); \t return false; \t});.編輯:唯一不同的是,IE工作示例中的html是靜態的,並且該函數不包含淡入淡出。但這真的很重要嗎? – Joseph 2011-04-02 11:35:30

+0

@Joseph:如果你讓'name'和'id'值有所不同,我看不到任何理由不起作用。請注意,找到哪個元素取決於它在文檔中的位置(在我的示例中,爲'foo'找到錨點,因爲它比文檔中的div早;如果您將文檔中的'div'放在文檔中,它首先被發現:http://jsbin.com/uzura3/3),所以如果你曾經有過這樣的工作,那麼你很幸運。基本上,在IE6和IE7中,你**不能**具有相同值的'name'和'id'並使其可靠工作。 – 2011-04-02 11:37:24

+0

它並不幸運,但我會保持修復,因爲它可以防止其他問題。但作爲另一種解決方案,我有另一個非工作的動畫腳本,如何使用IE瀏覽器完成點擊操作,以便它可以執行簡單的功能? – Joseph 2011-04-02 11:51:05

0

您的問題可能是版本,如果您使用的IE瀏覽器,或IE認爲它應該使用的版本。 JQuery不支持IE 6.如果您使用的是IE8,則可能需要放入HTML IE = edge,以使瀏覽器像IE8一樣行爲,而不是自動模擬舊版本。

爲此,請在HTML標頭中添加如下所示的元標記。

<meta http-equiv="X-UA-Compatible" contant="IE=edge" /> 
+0

請問您可以進一步解釋如何嘗試此修復程序。謝謝 – Joseph 2011-04-02 11:48:56

+0

約瑟夫,我已將這行代碼添加到答案中。 – Jpickett 2011-04-02 12:06:51