2010-10-16 52 views
0

以下代碼在IE以外的瀏覽器中正常工作。在IE中,只有#toggle-instructions處理程序有效,但#toggle-cue-sheet-instructions不能。任何人都知道爲什麼IE瀏覽器遇到麻煩?發生什麼事是,點擊帶有id = toggle-cue-sheet-instructions的鏈接時不會執行任何操作,而點擊帶有id = toggle-instructions的鏈接則可以正常工作。我嘗試過切換,但是,如果我沒有記錯,我在其中一個瀏覽器中遇到了問題,而改用此路線(這不是我的偏好)。在Safari和Firefox中一切都很完美(還有什麼是新的?)。jQuery代碼無處不在但IE瀏覽器,爲什麼?

$(document).ready(function(){ 
    $("#toggle-instructions").click(function() { 
    if ($("#download-items #instructions").is(":hidden")) { 
     $("#download-items .instructions-link a").text("Hide download instructions"); 
     $("#download-items #instructions").slideDown("slow"); 
    } 
    else { 
     $("#download-items .instructions-link a").text("View download instructions"); 
     $("#download-items #instructions").slideUp("normal"); 
    } 
    return false; 
    }); 
    $("#toggle-cue-sheet-instructions").click(function() { 
    if ($("#prs-info-container #instructions").is(":hidden")) { 
     $("#prs-info-container .instructions-link a").text("Hide cue sheet instructions"); 
     $("#prs-info-container #instructions").slideDown("slow"); 
    } 
    else { 
     $("#prs-info-container .instructions-link a").text("View cue sheet instructions"); 
     $("#prs-info-container #instructions").slideUp("normal"); 
    } 
    return false; 
    }); 
}); 
+2

你應該真的使用toggle()方法。 – Soviut 2010-10-16 22:39:58

+2

代碼的意圖是什麼? IE中發生了什麼讓你認爲它不起作用?有沒有錯誤信息?幫助我們幫你 – 2010-10-16 22:42:38

+1

m79。你必須對問題本身更加具體! – Trufa 2010-10-16 22:44:37

回答

2

看你的代碼,它看起來好像你正在使用的instructions ID不止一次。

如果是這樣的話,你需要改變你的HTML標記,所以你不會重複使用一個ID。頁面上的ID必須是唯一的

正是這兩條線,導致我認爲你正在重用instructions作爲ID

$("#download-items #instructions").slideDown("slow"); 
    ... 
    $("#prs-info-container #instructions").slideDown("slow"); 

如果您嘗試使用一個ID,它是不是唯一的選擇,事情會打破。

通常解決方案是使用類而不是ID如果您需要/想要有多個。

這就是如果instructions是一個類,那麼這兩行看起來像。

$("#download-items .instructions").slideDown("slow"); 
    ... 
    $("#prs-info-container .instructions").slideDown("slow"); 

現在the . class selector代替​​。

當然,您還需要更改HTML標記以便使用class="instructions"而不是id="instructions"

+1

我同意,我得出了同樣的結論(除非OP在整個頁面中移動/回收相同的##指令元素)。 IE可能會在處理代碼時完全忽略第二個ID(所以第二個選擇器永遠不會匹配),或者當jQuery試圖訪問元素(可能通過getElementsById)時,它停止JS處理。 – MicE 2010-10-16 23:30:40

+0

帕特里克dw:謝謝你!另一組眼睛確實有幫助。抓住那個好工作,欣賞它。 – m7d 2010-10-16 23:31:25

+0

@ m7d - 不客氣。 :o) – user113716 2010-10-16 23:34:09

相關問題