jQuery .toggle () не работающий с TRS в IE

пример:

function goToElement(elemId){
 let element = window.getElementById(elemId);
 element.scrollIntoView({behavior: "smooth"});
}
25
задан Community 23 May 2017 в 12:14
поделиться

10 ответов

Я испытал ту же ошибку при использовании tr в таблицах. Я провел небольшое расследование, используя инструмент отладки скриптов IE8.

Сначала я попытался использовать переключатель:

$(classname).toggle();

Это работает в FF, но не в IE8.

Затем я попробовал следующее:

if($(classname).is(":visible"))//IE8 always evaluates to true.
     $(classname).hide();
else
     $(classname).show();

Когда я отлаживал этот код, jquery всегда думал, что он виден. Так что он закроет его, но никогда не откроет обратно.

Затем я изменил его на это:

var elem = $(classname)[0];
if(elem.style.display == 'none')
     $(classname).show();
else
{
     $(classname).hide();               
}

Это сработало. jQuery содержит ошибку или, может быть, мой html немного странный. В любом случае, это устранило мою проблему.

46
ответ дан 28 November 2019 в 18:00
поделиться

Удалите точку из строки . Синтаксис для выбора класса jQuery заключается в добавлении точки перед ним, но она вам не нужна в вашем HTML-коде.

6
ответ дан 28 November 2019 в 18:00
поделиться
$(document).ready(function() {  
    $(".readOnlyRow").hide();  
    $("#readOnlyRowsToggle").click(function() {  
        $(".readOnlyRow").toggle($('.readOnlyRow').css('display') == 'none');  
    });  
});

Есть ошибка jQuery, из-за которой IE8 заставляет все оценивать как истину. Попробуйте выше

1
ответ дан 28 November 2019 в 18:00
поделиться

Just encountered this myself -- the easiest solution I've found is to check for:

:not(:hidden)

instead of

:visible

then act accordingly . .

3
ответ дан 28 November 2019 в 18:00
поделиться

Я обнаружил, что, хотя это не работает в IE8

$ ('. TableRowToToggle'). Toggle ();

, но это работает:

$ ('. tableRowToToggle '). each (function () {this.toggle ()});

Понял идею из ссылки jAST, размещенной здесь до

4
ответ дан 28 November 2019 в 18:00
поделиться

Я решил эту проблему, скрыв дочерние элементы элемента TR.

toggleTr($(".toggletr"));

function toggleTr(el) {
    $(el).children('td').each(function() {
        $(this).toggle();
    });
}

Похоже, это нормально для FF3.5 / FF3 / IE8 / IE7 / IE6 / Chrome / Safari.

4
ответ дан 28 November 2019 в 18:00
поделиться

Обновление до jQuery 1.4 исправляет это, хотя единственным "исправлением" на этой странице, которое сработало для меня, был ответ Dough boy:

$(document).ready(function() {  
  $(".readOnlyRow").hide();  
  $("#readOnlyRowsToggle").click(function() {  
    $(".readOnlyRow").toggle($('.readOnlyRow').css('display') == 'none');  
  });  
});
9
ответ дан 28 November 2019 в 18:00
поделиться

Похоже, это было исправлено в JQuery 1.4.

2
ответ дан 28 November 2019 в 18:00
поделиться

Я тоже это заметил. Скорее всего, вам придется вместо этого переключать класс на каждом td. Я еще не пробовал это решение, поэтому дайте мне знать!

Для других - это специфично для IE8, а не 6 или 7.

РЕДАКТИРОВАТЬ

Очевидно, вы не пробовали это, о чем свидетельствует -1 , как я только что сделал с хорошими результатами (в моей ситуации).

CSS

tr.hideme td {display: none}

JS

$("#view-advanced").click(function() {
    $("tr.hideme td").toggle();
    return false;
});
-1
ответ дан 28 November 2019 в 18:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: