2014-12-17 2 views
0

Я хочу проверить, равен ли дисплей равным ни одному, либо таблице-строке. В настоящее время я использую это:Javascript/JQuery, если значение отображения стиля равно

Javascript/JQuery:

function changeDisplay(element){ 
    var clickedLi = $(element).closest("li"); 
    var pageList = $(".paginering li"); 
    var trList = $(".tabelOpenstaand tbody tr.hoofdRij"); 
    var trNumber = $(".tabelOpenstaand tbody tr.hoofdRij").length; 

    debugger; 

    for (var i = 0; i < trNumber; i++){ 
     if (trList[i].css("display") == "table-row"){ 
      trList[i].css("display", "none"); 
     } 
    } 
} 

В настоящее время я получаю ошибку: 'Uncaught TypeError: не определено не является функцией' на линии, если. Как я могу это решить? trList заполняется правильными элементами.

ответ

2

Вместо trList [я], попробуйте trList.eq (I)

Это стало бы

if (trList.eq(i).css("display") == "table-row"){ 
     trList.eq(i).css("display", "none"); 
    } 

Source

0

trList не является массивом это объект. Так что trList[i] не будет работать.

Вам нужно будет сделать foreach.

trList.each(function(){ 
    if($(this).css("display") == "table-row"){ 
     $(this).css("display", "none"); 
    } 
}); 
+0

'trList [i]' отлично в этом случае (даже если это объект), он просто не возвращает объект jQuery. – Phylogenesis

0

Когда я ходить объект, я часто писать код, как это:

function changeDisplay(element){ 
    // var clickedLi = $(element).closest("li"); 
    // var pageList = $(".paginering li"); 
    // var trList = $(".tabelOpenstaand tbody tr.hoofdRij"); 
    // var trNumber = $(".tabelOpenstaand tbody tr.hoofdRij").length; 

    var trList = document.querySelectorAll(".tabelOpenstaand tbody tr.hoofdRij"); 

    for (var i in trList){ 
     if(!i.match(/\D/) continue; 
     if(trList[i].css("display") == "table-row"){ 
      trList[i].css("display", "none"); 
     } 
    } 
} 

«String.match()» является полезным, когда я иду в объекте. И я предпочитаю использовать синтаксис «for (var ... in ...)». Просто личная точка зрения.

1

Существует множество ответов с соответствующими обходными решениями, но никто не объяснил причину, по которой это происходит.

$('selector') возвращает объект jQuery. Этот объект имеет числовые индексы, которые содержат элементы DOM.

Это означает, что $('selector')[0] возвращает элемент DOM, а не объект jQuery, и поэтому не имеет метода .css().

+0

Спасибо за объяснение. Что было бы лучшим решением в этом плане? – Grafit

+1

Лично я считаю, что '.each (...)' - это идиоматический способ перебора объектов jQuery. – Phylogenesis

Смежные вопросы