Javascript 简单jQuery隐藏/显示在IE中不起作用

Javascript 简单jQuery隐藏/显示在IE中不起作用,javascript,jquery,internet-explorer,cross-browser,show-hide,Javascript,Jquery,Internet Explorer,Cross Browser,Show Hide,我不明白为什么。看起来很容易。我的HTML是用HAML编写的。但如果你不知道HAML是什么,这很容易理解。我的HAML是这样写的: $(document).ready(function () { $('#createGallery').hide(); $("#newGallery").click(function () { $("#createGallery").show('slow'); }); $("#gallerySelect > o

我不明白为什么。看起来很容易。我的HTML是用HAML编写的。但如果你不知道HAML是什么,这很容易理解。我的HAML是这样写的:

$(document).ready(function () {
    $('#createGallery').hide();

    $("#newGallery").click(function () {
        $("#createGallery").show('slow');
    });
    $("#gallerySelect > option").not("#newGallery").click(function () {
        $("#createGallery").hide('slow');
    });
});

我不相信选项元素有点击事件。您需要将单击处理程序附加到SELECT元素,然后选中所选的选项\

(免责声明:空气编码)


我不相信选项元素有点击事件。您需要将单击处理程序附加到SELECT元素,然后选中所选的选项\

(免责声明:空气编码)


这将有助于获取当前页面的HTML,以及了解更多有关问题的信息

  • 哪个版本的IE有问题
  • 只是隐藏/显示#createGAllery不起作用,还是单击事件根本没有触发
  • 什么是
    警报($(“#gallerySelect>选项”)。而不是(“#newGallery”)。长度)
    警报($(“#gallerySelect>选项”).length)返回

获取当前页面的HTML以及对问题的更多了解会有所帮助

  • 哪个版本的IE有问题
  • 只是隐藏/显示#createGAllery不起作用,还是单击事件根本没有触发
  • 什么是
    警报($(“#gallerySelect>选项”)。而不是(“#newGallery”)。长度)
    警报($(“#gallerySelect>选项”).length)返回

您的所有选项元素都具有相同的值。。。这通常不是该元素的使用方式。此外,如果要立即隐藏元素,可以在HAML中设置它(当然,除非您希望非JS用户在默认情况下看到它)。如果你按照以下思路做一些事情,这会更有意义:

$(document).ready(function(){
    $('#createGallery').hide();
    $("#gallerySelect").click(function () {
        if (this.options[this.selectedIndex].id == 'newGallery') {
            $("#createGallery").show('slow');
        } else {
            $("#createGallery").hide('slow');
        }
    });
});
对于HAML,就像这样:

$(function(){ 
    $("#gallerySelect").bind('change',function () {
        if($(this).val() == 'newGallery') {
            $("#createGallery").show('slow');   
        } else {
            $("#createGallery").hide('slow');
        }    
    });

});

所有选项元素都具有相同的值。。。这通常不是该元素的使用方式。此外,如果要立即隐藏元素,可以在HAML中设置它(当然,除非您希望非JS用户在默认情况下看到它)。如果你按照以下思路做一些事情,这会更有意义:

$(document).ready(function(){
    $('#createGallery').hide();
    $("#gallerySelect").click(function () {
        if (this.options[this.selectedIndex].id == 'newGallery') {
            $("#createGallery").show('slow');
        } else {
            $("#createGallery").hide('slow');
        }
    });
});
对于HAML,就像这样:

$(function(){ 
    $("#gallerySelect").bind('change',function () {
        if($(this).val() == 'newGallery') {
            $("#createGallery").show('slow');   
        } else {
            $("#createGallery").hide('slow');
        }    
    });

});

它在其他浏览器中工作吗?你的标题暗示它是,但它不是明确的。它在其他浏览器中工作吗?你的标题暗示它有,但并不明确。是的,看起来你想要的是“更改”事件而不是单击。我同意“更改”而不是“单击”。。。当然,我不同意我的免责声明……=)@swilliams我测试了great_llama的代码,它在FF3、IE8和IE8中作为7工作。如果你仔细想想,这是有道理的。这是一个托管示例:可编辑via:Wow slick rick!非常感谢你,伟大的美洲驼。但是,如果单击或更改,则没有区别。或者至少,我看不出有什么区别。@如果使用“单击”事件,如果使用键盘更改所选选项,则不会调用“隐藏”和“显示”。是的,看起来您希望的是“更改”事件而不是单击。我同意“更改”而不是“单击”。。。当然,我不同意我的免责声明……=)@swilliams我测试了great_llama的代码,它在FF3、IE8和IE8中作为7工作。如果你仔细想想,这是有道理的。这是一个托管示例:可编辑via:Wow slick rick!非常感谢你,伟大的美洲驼。但是,如果单击或更改,则没有区别。或者至少,我看不出有什么区别。@如果使用“单击”事件,如果使用键盘更改所选选项,则不会调用“隐藏和显示”。