Превратите этот Javascript в эквивалент JQuery - PullRequest
0 голосов
/ 27 января 2010

Можете ли вы помочь превратить следующий Javascript в эквивалент jQuery?

// Let's use a lowercase function name to keep with JavaScript conventions
function selectAll(involker) {
    // Since ASP.NET checkboxes are really HTML input elements
    //  let's get all the inputs
    var inputElements = document.getElementsByTagName('input');

    for (var i = 0; i < inputElements.length; i++) {
        var myElement = inputElements[i];

        // Filter through the input types looking for checkboxes
        if (myElement.type === "checkbox") {

            // Use the involker (our calling element) as the reference 
            //  for our checkbox status
            myElement.checked = involker.checked;
        }
    }
}

Это отсюда http://wiki.asp.net/page.aspx/281/check-uncheck-checkboxes-in-gridview-using-javascript/

Ответы [ 7 ]

5 голосов
/ 27 января 2010
function selectAll(involker) {
    $('input:checkbox').attr('checked', $(involker).attr('checked'));
}
2 голосов
/ 27 января 2010

Давайте сделаем это в стиле jquery!

$('type here the selector for invoker').click(function(){
    $('input:checkbox').attr('checked', $(this).attr('checked'));
});
2 голосов
/ 27 января 2010

Всего по:

function selectAll(involker) {
  $('input:checkbox').attr('checked', involker.checked);
}
1 голос
/ 27 января 2010

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

function selectAll(invoker) {
    var check = invoker.checked;
    $('input:checkbox').each( function() { this.checked = check; } );
}
1 голос
/ 27 января 2010
$('input:checkbox').attr('checked', involker.checked);

Также это «invoker», а не «invoker».

0 голосов
/ 27 января 2010

Просто чтобы дать множество вариантов и добавить информацию для других.

Для решения проблемы замены вашей функции: Установите все флажки в соответствии с текущим проверенным статусом участника:

function selectAll(involker) 
{
    $("input:checkbox").attr("checked",involker.checked);
};

РАЗНОЕ

Установите все флажки, которые в настоящее время отмечены, чтобы соответствовать текущему статусу проверенного участника:

function selectAll(involker) 
{
    $("input:checkbox:checked").attr("checked",involker.checked);
};

Установить все флажки НЕ отмеченные, чтобы соответствовать текущему статусу проверенного участника:

function selectAll(involker) 
{
    $("input:checkbox:not(:checked").attr("checked",involker.checked);
};

И бросить в другое, я нашел полезным с «основным флажком / кнопкой мыши»: переключить все флажки из текущего состояния

Установить все флажки напротив их текущей настройки: (допущение объекта с атрибутом id = 'toggleCheckboxes')

$('#toggleCheckboxes').click(function()
{
    $("input:checkbox").each(function() {
        this.checked = !this.checked;
    });
});

Установить все флажки в соответствии с текущими настройками основного флажка: (при условии ввода объекта флажка ввода с атрибутом id = 'masterCheckbox')

$('#masterCheckbox:checkbox').change(function()
{
    var master = this.checked;
    $(".childCheckbox input:checkbox").each(function() {
        this.checked = master;
    });
});
0 голосов
/ 27 января 2010

Принимая тот же HTML, что и в примере, вы захотите удалить атрибуты события (т.е. OnClick="selectAll(this)") и использовать этот ненавязчивый Javascript:

$(document).ready( function() {
    $('#cbSelectAll').click( function() {
      $('input:checkbox').attr( 'checked', $(this).attr('checked') );
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...