Javascript 选择使用jquery不在IE中工作的选项?

Javascript 选择使用jquery不在IE中工作的选项?,javascript,jquery,html,css,internet-explorer,Javascript,Jquery,Html,Css,Internet Explorer,在这里,当我选择一个类别男性或女性时,我试图根据类别选择获得值,下面的选择选项应显示相关选项。我所做的满足了我的要求,但此代码在ie中不起作用。它显示子类别的所有选项,而不是显示该类别的相应选项。任何帮助都将不胜感激 这是我的小提琴 注意:在IE中检查此链接 HTML: 我在自己的页面上运行了这段代码,效果很好。但是,当我通过调试器在您的摆弄下运行它时,我在IE11中得到一个错误,jQuery文件访问在这一行被拒绝: // Support: IE>8 // If iframe docume

在这里,当我选择一个类别男性或女性时,我试图根据类别选择获得值,下面的选择选项应显示相关选项。我所做的满足了我的要求,但此代码在ie中不起作用。它显示子类别的所有选项,而不是显示该类别的相应选项。任何帮助都将不胜感激

这是我的小提琴 注意:在IE中检查此链接

HTML:


我在自己的页面上运行了这段代码,效果很好。但是,当我通过调试器在您的摆弄下运行它时,我在IE11中得到一个错误,jQuery文件访问在这一行被拒绝:

// Support: IE>8
// If iframe document is assigned to "document" variable and if iframe has been reloaded,
// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
if ( parent && parent.frameElement ) {
    parent.attachEvent( "onbeforeunload", function() {
        setDocument();
    });
}
在小提琴中更改为jquery 1.9效果很好,在我自己的窗口中使用jquery 1.10.1运行代码也是如此。看起来问题与它如何嵌入到JSFIDLE中有关,而不是与您的实际代码有关

经过进一步讨论,您似乎遇到了另一个问题:IE没有按照您想要的方式处理元素的显示。铬合金会隐藏它们,IE不会

您无法控制IE或其他浏览器如何选择元素的visible属性的句柄。因此,我建议您使用两个下拉列表,一个用于男性类别,一个用于女性类别,然后在主类别更改时隐藏/显示相应的下拉列表。另一个选项是使用与该部门相关的项目动态填充select

如果您需要的话,我稍后会为您发布这两个方面的示例

我创造了你小提琴的新版本

这一个正在创建一个javascript选项数组:

var subcategories = [
    { category: "menu1", name: "Clothing"}, 
    { category: "menu1", name: "Accessories"}, 
    { category: "menu1", name: "Footwear" }, 
    { category: "menu2", name: "Watches" }, 
    { category: "menu2", name: "Sunglasses"}, 
    { category: "menu2", name: "Bags"}
];
然后,每次类别下拉列表更改时,都会从子类别中删除所有选项,然后我们迭代子类别数组,并将与新选择的类别ID匹配的所有项目添加到子类别中:

$("#subcategory option").remove();
$.each(subcategories, function () {
        if (this.category == selectedCategory)
            $("#subcategory").append(
                $("<option />")
                    .val(this.name)
                    .text(this.name));
    });

上面的代码使用jQuery$。每个函数,因为您将子类别数组作为第一个参数传递,所以第二个参数中指定的函数在每个单独项的上下文中执行。因此,这实际上是对子类别[0],然后是子类别[1]等的引用。您也可以使用普通javascript for循环来实现这一点。

哪个版本的IE?哪个版本的jQuery?一般来说,您不能将元素视为DOM的普通部分。对属性的支持,即使是像disabled这样的简单属性,充其量也是零碎的。你最好的选择是根据你的过滤器重新填充选择-你可以将其他版本保存在表单元素之外某个不可见的div中。它似乎在IE10和IE11中起作用。你为什么要使用.show in$Clothing,Shoots.prop'disabled',false.show;?和infact.hide in$subcategory选项.prop'disabled',true.hide;?你是在试图只展示合适的功能,而隐藏其余的功能吗?@SaurabhSharma是的,我在尝试展示合适的选项。在我的机器上,Novob560,os:windows 7 64位它在IE10中不起作用。@cimmanon jquery版本1.10.1和IE10及以下,请您重新编辑答案。我是一个新的jquery用户,没有听清楚您所说的。谢谢您的提醒。在左上角的框架和扩展下使用的jQuery库版本1.10.1没有正确加载到IE中,因此导致脚本永远无法运行。我相信这是由于页面被嵌入到JSFIDLE站点的框架中。您有两个选择:1在下拉列表中将您的框架更改为jQuery 1.9.1,这将在IE中正确加载并允许脚本工作;2使用真实网页测试代码,而不是嵌入JSFIDLE。我正在本地服务器中测试,仍然存在相同的问题。当我使用jQuery 1.9.1时,所有选项都会显示出来,但无法访问,这是一个非常糟糕的界面。我需要的是不显示更新我的答案。我以后会把附加代码发到这个地址。
var subcategories = [
    { category: "menu1", name: "Clothing"}, 
    { category: "menu1", name: "Accessories"}, 
    { category: "menu1", name: "Footwear" }, 
    { category: "menu2", name: "Watches" }, 
    { category: "menu2", name: "Sunglasses"}, 
    { category: "menu2", name: "Bags"}
];
$("#subcategory option").remove();
$.each(subcategories, function () {
        if (this.category == selectedCategory)
            $("#subcategory").append(
                $("<option />")
                    .val(this.name)
                    .text(this.name));
    });