Событие Jquery click внутри каждого цикла не работает в IE - PullRequest
0 голосов
/ 25 июля 2011

Я унаследовал этот фрагмент кода и пытаюсь заставить его работать. Он генерирует меню выбора, которое используется для фильтрации страницы товаров. Первоначально он генерировал UL (опциями были LI), но теперь он преобразуется в список выбора. Параметры отображаются отлично во всех браузерах, и щелчок отлично работает во всех браузерах, кроме IE (все версии). В IE я могу использовать выпадающий список, но ничего не происходит, когда я щелкаю опцию.

Я пытался изменить событие, чтобы оно изменилось и было выбрано, но это, кажется, только сломало все.

Заранее спасибо за любую помощь!

$.each(hazardClassification, function (i) {
                cleanMenuforClass = hazardClassification[i].toLowerCase().replace(/ /g, '_').replace(/&./g, '_').replace(/\,/g, '').replace('/', '').replace('.', '');


                $("<option/>", {
                    "class": cleanMenuforClass,
                    click: function (event) {
                        $("#legend-inline-search").val("");
                            $("#pipemarker-type-selection div.product-container").css('display', '');
                        var clickedInput = $(this).attr("class");
                        var clickedCheckbox = $(this);
                        if ($(this).is(":selected")) {
                                filterItems(hazardClassification[i], clickedInput, countItems, selectedItemsContainer, clickedCheckbox);

                            } else {
                                removeFilter(hazardClassification[i], clickedInput, countItems, selectedItemsContainer);
                            }

                    }
                }).appendTo("#filter-by-classification select").append('<span>' + hazardClassification[i] + '"<span>');

        });

ОБНОВЛЕНО: найден обходной путь, который все еще использует jQuery и упрощает работу для фиктивного дизайнера (это я) Есть ли обходной путь для запуска события option.click в IE?

Ответы [ 2 ]

0 голосов
/ 25 июля 2011

Попробуйте это

$.each(hazardClassification, function (i) {
                cleanMenuforClass = hazardClassification[i].toLowerCase().replace(/ /g, '_').replace(/&./g, '_').replace(/\,/g, '').replace('/', '').replace('.', '');


                $("option", {
                    "class": cleanMenuforClass,
                    click: function (event) {
                        $("#legend-inline-search").val("");
                            $("#pipemarker-type-selection div.product-container").css('display', '');
                        var clickedInput = $(this).attr("class");
                        var clickedCheckbox = $(this);
                        if ($(this).is(":selected")) {
                                filterItems(hazardClassification[i], clickedInput, countItems, selectedItemsContainer, clickedCheckbox);

                            } else {
                                removeFilter(hazardClassification[i], clickedInput, countItems, selectedItemsContainer);
                            }

                    }
                }).appendTo("#filter-by-classification select").append('<span>' + hazardClassification[i] + '"<span>');

        });
0 голосов
/ 25 июля 2011

Я думаю, что это проблема с IE. IE выбирает (когда включены опции) всегда ведут себя не странно.

Я нашел это в группе новостей.

Мы не можем использовать собственные события для нажатия на элемент в IE. IE всегда сообщает высоту и ширину 0 для опционных элементов, так что есть нет способа вычислить, где должна быть точка щелчка.

и поэтому я думаю, что вы должны использовать обходной путь javascript вместо использования jquery "click" событие

...