jquery名称选择器不在ie6中工作

时间:2012-03-25 13:08:02

标签: javascript jquery jquery-selectors

var brands = document.getElementsByName("brand");
for(var brand in brands){
    $("input[name='brand']").eq(brand).click(function(){
                        alert("hello22");
                        loadDataFN(1);                
                });
}

此代码未在ie6中执行, 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

问题可能是您尝试使用for-in构造来迭代数字数组。这往往不会给出预期的结果。请改用for循环:

var brands = document.getElementsByName("brand");

// Use an incremental for loop to iterate an array
for(var i=0; i<brands.length; i++){
    $("input[name='brand']").eq(brands[i]).click(function(){
                        alert("hello22");
                        loadDataFN(1);                
                });
}

然而,

在看到代码的第一部分后,循环显得不必要。您应该只需要以下内容,因为您要为所有品牌输入分配相同的功能。

// These will return the same list of elements (as long as you don't have non-input elements named brand)
// though the jQuery version will return them as jQuery objects
// rather than plain DOM nodes
var brands = document.getElementsByName("brand");
$("input[name='brand']");

因此,getElementsByName()和循环不是必需的。

$("input[name='brand']").click(function() {
       alert("hello22");
       loadDataFN(1);                
});

for-in循环用于迭代对象的属性,而不是遍历数组的元素。

答案 1 :(得分:1)

如果没有jQuery,为什么不编写代码呢?

这样的事情:

function getInputByName(name) {
    var i, j = document.getElementsByTagName('input').length;

    for(i=0;i<j;++i) { // You can also use getAttribute, but maybe it won't work in IE6
        if(document.getElementsByTagName('input')[i].name === name) {
            return document.getElementsByTagName('input')[i];
        }
    }

    return null;
}

我不知道jQuery,但也许你可以这样做:

$(getInputByName('brand')).eq(brand).click(function(){
                    alert("hello22");
                    loadDataFN(1);                
            });