Javascript jquery$函数在IE中返回不同的结果

Javascript jquery$函数在IE中返回不同的结果,javascript,jquery,Javascript,Jquery,当我在Firefox中运行此代码时,第一次执行此函数会生成一个警告框,提示如下: 17冲突控制 IE 6或7中运行的完全相同的页面会生成一个警告框,说明以下内容: 45冲突控制 Firefox是对的,只有17个相互冲突的控件。IE识别的45个控件不是“星期一”的后代。如果我指定了“星期一”作为$()函数的上下文,为什么IE会在它之外返回控件 试试这个 $('.Schedule .Full input').each(function(i) { var controls = $('

当我在Firefox中运行此代码时,第一次执行此函数会生成一个警告框,提示如下:

17冲突控制

IE 6或7中运行的完全相同的页面会生成一个警告框,说明以下内容:

45冲突控制

Firefox是对的,只有17个相互冲突的控件。IE识别的45个控件不是“星期一”的后代。如果我指定了“星期一”作为$()函数的上下文,为什么IE会在它之外返回控件

试试这个

$('.Schedule .Full input').each(function(i)
 {
        var controls = $('.Morning input, .MorningPart input, .Afternoon input, .AfternoonPart input', $(this).parents('.Schedule'));
        alert(controls.length + " Conflicting Controls\n"+
              $(this).parents('.Schedule').attr('id') + " Parent");
 });

我稍微修改了你的例子,因为我的结构有点不同

var controls = $(this).parents('.Schedule').children('.Morning input, .MorningPart input, .Afternoon input, .AfternoonPart input')
这项工作在IE和Firefox上产生了相同的结果

$(this).parents('.RadioSchedule').children('.Morning, .MorningPart, .Afternoon, .AfternoonPart').find('input');
正在执行时以增量方式返回更多结果。因此,当它第一次为MondayFullDay执行时,它会返回1个结果,但一旦它到达TuesdayFullDay,它就会返回2个结果。这只适用于IE

因为上面的xhtml结构对于这个应用程序不是可选的,所以我只是通过连续调用.parent()来手动遍历DOM

改变这个

$(this).parents('.Schedule');
进入这个

$(this).parents('.Schedule'); 
我仍然相信parents()方法并没有像文档中描述的那样工作…

我相信。parents()将基本上返回当前节点上方文档的整个结构,包括顶级主体节点。这是vs.parent(),它将只返回直接父级。如果“this”是输入节点,那么$(this.parent().parent().parent().parent())可能会更幸运(尽管它看起来非常漂亮,如果html结构发生更改,则需要更改)
$(this).parents('.Schedule'); 
$(this).parent().parent().parent();