2010-10-16 187 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

相关问题