Ссылка на параметры в разделе CSS функции jQuery

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

function GlobalCheckboxSwitch0(checkboxID, tableID)
{
    if ($(checkboxID).is(':checked'))
    {
        $('#table0 input[type=checkbox]').each(function ()
        {
            $(this).prop("checked", true);
        });

    } 
    else 
    {
        $('#table0 input[type=checkbox]').each(function ()
        {
            $(this).prop("checked", false);
        });
    }
}

Такой вызов работает только для таблица0:

        <input type = "checkbox" id = "selectall0" onClick = "GlobalCheckboxSwitch0('#selectall0', '#table0')"> 

Проблема в том, что таблица0 жестко запрограммирован в функции.

С помощью второго параметра tableID я бы хотел, чтобы он работал для любого идентификатора таблицы.

selectall0 - идентификатор флажка.

Попытка сослаться на параметр tableID следующим образом:

$('$(tableID) input[type=checkbox]')

дает синтаксическую ошибку.

Что мне следует изменить в способе обращения к tableID?

Спасибо.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
20
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если быть точным, это синтаксическая ошибка селектора jQuery - на самом деле это не синтаксическая ошибка JavaScript.

Вам нужно изучить конкатенацию, что означает объединение строк и переменных / выражений.

В его нынешнем виде ...

$('$(tableID) input[type=checkbox]')

... исполнится буквально. Другими словами, вы говорите jQuery найти элемент, название тэга которого равен tableID.

Вместо этого вам нужно объединить формульную и динамическую части селектора jQuery. Конкатенация в JavaScript выполняется через +.

$('#'+tableID+' input[type=checkbox]') //<-- note #

Необходимо избавиться от () в селекторе, а OP уже проходит в #

charlietfl 23.09.2018 19:01

Каким-то образом это дает: Неперехваченная ошибка: синтаксическая ошибка, нераспознанное выражение: $ (## table0) input [type = checkbox]

Ioan 23.09.2018 19:06

Ленивый с моей стороны. Отредактировано.

Mitya 23.09.2018 19:35
Ответ принят как подходящий

Используйте селектор tableID так же, как для checkboxID вместе с find().

Вы также можете пропустить if и each и сделать следующее:

function GlobalCheckboxSwitch0(checkboxID, tableID) {
  var allChecked = $(checkboxID).is(':checked');
  $(tableID).find('input[type=checkbox]').prop('checked', allChecked );

}

jQuery сделает each внутренне

Я бы переименовал параметр tableSelector, чтобы избежать путаницы, поскольку вы включаете #. Вы можете отправить 'table.selected' или любой другой селектор, на самом деле это не просто идентификатор. То же самое с checkboxID ...

Jason Goemaat 23.09.2018 19:15

Другие вопросы по теме