Селектор имени jquery не работает в ie6 - PullRequest
0 голосов
/ 25 марта 2012
var brands = document.getElementsByName("brand");
for(var brand in brands){
    $("input[name='brand']").eq(brand).click(function(){
                        alert("hello22");
                        loadDataFN(1);                
                });
}

Этот код не выполняется в ie6. Любая помощь будет оценена.

Ответы [ 2 ]

3 голосов
/ 25 марта 2012

Возможно, проблема в том, что вы пытаетесь использовать конструкцию 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 голос
/ 25 марта 2012

Почему бы вам не написать код без 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);                
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...