Javascript jQuery find()在IE和FF中的顺序不同
我试图在我的页面上找到第一个输入字段,这些字段有一个定义了类的父div。因此,按照定义的顺序获取输入对我来说很重要。不幸的是,Firefox给我的元素顺序与Internet Explorer相反。有什么办法解决这个问题吗 例如:Javascript jQuery find()在IE和FF中的顺序不同,javascript,jquery,dom,Javascript,Jquery,Dom,我试图在我的页面上找到第一个输入字段,这些字段有一个定义了类的父div。因此,按照定义的顺序获取输入对我来说很重要。不幸的是,Firefox给我的元素顺序与Internet Explorer相反。有什么办法解决这个问题吗 例如: <html> <head> <!-- Include jQuery --> </head> <body> <form> <div class="inputCon
<html>
<head>
<!-- Include jQuery -->
</head>
<body>
<form>
<div class="inputContainer">
</div>
<div class="inputContainer error">
<input name="input1"/>
</div>
<div class="inputContainer">
<input name="input2"/>
</div>
<div class="inputContainer error">
<span>
<input name="input3"/>
</span>
<span>
<input name="input4"/>
</span>
</div>
</form>
<script>
var errorContainers = $('input:visible, div.selector').parents('.inputContainer').filter('.error');
var firstErrorInput = $(errorContainers).find('input,div.selector').first();
alert($(firstErrorInput).attr('name'));
</script>
</body>
</html>
var errorContainers=$('input:visible,div.selector')。父项('.inputContainer')。筛选器('.error');
var firstErrorInput=$(errorContainers).find('input,div.selector').first();
警报($(firstErrorInput.attr('name'));
您的代码在Chrome(16)、Firefox(6)和IE 8(有无兼容模式)中提醒“input3”
用计算机进行测试
请注意,您正在多次包装选择器/所选元素,如$($($('selector'))
,这是不必要的
var errorContainers = $('input:visible, div.selector').parents('.inputContainer').filter('.error');
var firstErrorInput = $(errorContainers).find('input, div.selector').first();
alert($(firstErrorInput).attr('name'));
这就足够了
var $errorContainers = $('input:visible, div.selector').parents('.inputContainer').filter('.error');
var $firstErrorInput = $errorContainers.find('input, div.selector').first();
alert($firstErrorInput.attr('name'));
下面的选择器应该是使用CSS类inputContainer
和error
获取元素中的第一个input
$(document).ready(function() {
var x = $('.inputContainer.error input').first().attr('name');
});
在尝试读取DOM之前,请确保已加载它。为什么不
$('.inputContainer.error>input')。首先()
?这应该会使它们井然有序。我将代码编辑为一个工作示例<代码>$('.inputContainer.error>input').first()不起作用,因为我没有得到input3的错误。使用FF alert()返回input1,即返回input3。@CannyDuck:提供了我认为正确的输出。这与@FelixKling的上述内容之间的唯一区别是删除了
。。。这是你想要的吗?你肯定在使用一个看起来非常迂回的选择器集…@CannyDuck:啊,你的句子中有一个定义了类的父div,我被它难住了。。。input3
的父元素是span
元素。当然,如果输入元素不是子元素,请省略子选择器,就像@Chris所做的那样。好的,添加了“error”类,我明白你的意思,但是你的脚本很混乱,我不确定它是否符合你的要求。我的建议(在答案中)是,在DOM完成加载后,首先输入input
。你还想做什么?你太棒了。这就像一个符咒。