JQUERY;显示/隐藏不在IE中触发,适用于其他浏览器

时间:2011-03-29 07:17:53

标签: jquery internet-explorer hide show

以下好的是我正在使用此代码的代码的一部分。它应该是你点击图像的地方,它“显示”之前隐藏的div。然后,当您单击另一张图片时,它会隐藏当前打开的div并显示新的div。它适用于IE以外的每个浏览器(当然。)我不知道我的脚本做错了什么,请帮忙吗?

<div class="content">
<table width="100%" border="0">
<tr>
  <td align="center">
    <a id="1" href="#"><img src="..." width="100" height="92" alt="1" /></a>
    <a id="2" href="#"><img src="..." width="100" height="70" alt="2" /></a>
    <a id="3" href="#"><img src="..." width="100" height="112" alt="3" /></a>
    <a id="4" href="#"><img src="..." width="100" height="65" alt="4" /></a> 
    <a id="5" href="#"><img src="..." width="100" height="141" alt="5" /></a>
    </td>
  </tr>
</table>
</div>

<div id="frame1">
  <button>close</button>
  <iframe src="..." width="100%" height="100%">
    <p>Your browser does not support iframes.</p>
</iframe>
</div>
<div id="frame2">
  <button>close</button>
  <iframe src="..." width="100%" height="100%">
    <p>Your browser does not support iframes.</p>
  </iframe>
</div>
<div id="frame3">
  <button>close</button>
  <iframe src="..." width="100%" height="100%">
    <p>Your browser does not support iframes.</p>
</iframe>
</div>

等...

<script>
//controller for first site
$("a#1").click(function () {
    $("#frame2,#frame3,#frame4,#frame5").hide("fast");
    $("#frame1").show("slow");
});
//controller for second site
$("a#2").click(function () {
    $("#frame1,#frame3,#frame4,#frame5").hide("fast");
    $("#frame2").show("slow");
});
//controller for third site
$("a#3").click(function () {
    $("#frame1,#frame2,#frame4,#frame5").hide("fast");
    $("#frame3").show("slow");
});
//controller for fourth site
$("a#4").click(function () {
    $("#frame1,#frame2,#frame3,#frame5").hide("fast");
    $("#frame4").show("slow");
});
//controller for fifth site
$("a#5").click(function () {
    $("#frame1,#frame2,#frame3,#frame4").hide("fast");
    $("#frame5").show("slow");
});
//button close frames
$("button").click(function () {
    $("#frame1,#frame2,#frame3,#frame4,#frame5").hide("fast");
});
</script>

当然帧div的css必须是“display:none;”它的工作原理。

5 个答案:

答案 0 :(得分:2)

$(document).ready(function() {
  $("a#1").click(function () {
    $('div[id~="frame"]').css({"display":"none"}); //hides all divs with id containing "frame"
    $("#frame1").show("slow");
  });
});

注意:这不是一个好习惯。

  

必须启动ID和NAME元素   用字母表示大写字母A到Z.   或小写a至z;一个数字不是   允许。在第一封信之后   字母数(a到z,A到Z),   数字(0到9),连字符( - ),   下划线(_),冒号(:)和   允许句点(。)。

答案 1 :(得分:0)

我记得有类似的问题...隐藏所有然后显示一个解决了我的问题... 所以试试看

//controller for first site
$("a#1").click(function () {
    $("#frame1,#frame2,#frame3,#frame4,#frame5").hide("fast");
    $("#frame1").show("slow");
});

并尝试使用其他标识符然后枚举

答案 2 :(得分:0)

您是否已将jQuery代码放在document ready block中? 有点像这样:

$(document).ready(function() {
$("a#1").click(function () {
    $("#frame2,#frame3,#frame4,#frame5").hide("fast");
    $("#frame1").show("slow");
});
});

当Firefox能够在执行之前加载我的javascript文件时,我遇到了这个问题。 IE有一些问题。

修改:尝试使用链接的文字ID。 e.g:

<a id="link1" href="...">link text</a>

ID不是以数字开头,因此IE可能会给出问题。

答案 3 :(得分:0)

试试下面的代码,但不确定,

$("a#1").live('click', function(event) {//hide and show}

答案 4 :(得分:0)

我认为您应该尝试提供不以数字开头的链接ID值。 Numbers aren't valid to start out ID and NAME attributes,但可以在初始字符后使用。

另外,我可以建议你写出类似的代码:

$('div.content a[href="#"]').click(function(){
    // I'm assuming that you'll be changing the ID of the link,
    // so we'll use the IMG instead
    var num = $(this).find('img').attr('alt');

    $('iframe').not('#iframe'+num).hide('fast')
               .end().filter('#iframe'+num).show('slow');
});

这样,您只需要这一小块代码来处理处理IFRAME显示/隐藏行为的所有重复代码。只需按照您的意愿调整即可。