javascript - jQuery find() 在 IE 和 FF 中的顺序不同

标签 javascript jquery dom

我尝试在页面上找到第一个输入字段,这些输入字段的父 div 具有已定义的类。因此,按照定义的顺序获取输入对我来说很重要。不幸的是,Firefox 提供的元素顺序与 Internet Explorer 相反。有什么想法可以解决这个问题吗?

示例:

<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>

最佳答案

您的代码会在 Chrome(16)、Firefox (6) 和 IE 8(带或不带兼容模式)中提醒“input3”。

测试过; http://jsfiddle.net/sR97k/

请注意,您多次包装选择器/所选元素,例如 $($($('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 类 inputContainererror 获取元素中的第一个 input

$(document).ready(function() {
    var x = $('.inputContainer.error input').first().attr('name'); 
});

在尝试读取 DOM 之前,确保 DOM 已加载。

关于javascript - jQuery find() 在 IE 和 FF 中的顺序不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8715494/

相关文章:

javascript - 如何从下面的代码中获取复选框值

javascript - 当必须从空数据重绘时,FullCalendar 为空

javascript - 在 Nodejs 中管理大量回调递归

Javascript:动态计算输入值

javascript - 保存的(全局定义的)数组在回调后被清空

javascript - 当 DOM 元素滚动到 View 中时动态更改它们(性能)

javascript - 在路径 Javascript 中使用变量

javascript - 即使我的 json 有效,也得到 "Error: Invalid Geojson Object"

javascript - html5,什么是isContentEditable?

jquery - 数据表 DOM 定位