2015-12-29 3 views
1

Это довольно просто, но мне нужно иметь возможность переключаться с отображением столбцов в таблице.Переменные функции в jQuery

Идея состоит в том, чтобы иметь функцию, которая будет принимать имя столбца (все строки имеют одинаковое поле данных в одном столбце) и скрыть его, изменяя ширину таблицы по мере ее появления.

Использование инспектора Chrome, я придумал простое доказательство концепции

$('[data-id="column"],[data-field="column"]').toggle() 

После запуска выше, мне нужно регулировать ширину элемента плюс/минус 4 пикселя для таблицы, чтобы правильно вписаться - Таблица отображает белый квадрат с правой стороны, где находится столбец (столбцы). Это просто доказательство концепции, и фактическая ширина будет храниться в переменной, которая будет управляться, чтобы можно было скрывать несколько столбцов.

$(".oe_list_content").width($(window).width()+/-4) 

Я сделал простую функцию, чтобы придумать с первоначальной идеей, но когда я запускаю функцию, она возвращает неопределенное значение, и не вносить изменения. Я вполне уверен, что это возможно, но селектор jQuery не может принять функциональную переменную?

function rowToggle(row){ 
    // Verify the rows even exist in the DOM 
    if($('[data-id="'+row+'"]').length){ 
     $('[data-id="'+row+'"]','[data-field="'+row+'"]').toggle(); 
     if($('[data-id="'+row+'"]').is(':hidden')){ 
      $(".table").width($(window).width()+4); 
     }else{ 
      $(".table").width($(window).width()-4); 
     } 
    } 
} 

Это действительно кажется переменной проблемы, потому что

var row = "column"; 
$('[data-id="'+ row +'"]').toggle(); 

фактически не переключает поле. Я что-то упускаю?

+2

вы могли бы разместить HTML вы работаете? – DinoMyte

+0

'var row =" column "; «Надеюсь, ты понял, что это странно. Кроме того, если вы хотите, чтобы функция возвращала что-то, вы должны указать оператор 'return'. – lleaff

+0

Селектор - это всего лишь строка, и конкатенация переменной будет работать. [Например] (https://jsfiddle.net/4c9esfyx/) –

ответ

1

Эта линия $('[data-id="'+row+'"]','[data-field="'+row+'"]').toggle();

Должно быть: $('[data-id="'+row+'"],[data-field="'+row+'"]').toggle();

Это одна строка селектор. Не две строки, разделенные запятой, как у вас.

Далее ссылка на этот вопрос: jQuery attribute selector for multiple values