Как получить проп ('проверено') это внутри именованной функции change()

Итак, я проверяю, проверено ли значение свойства true или false. код ниже прекрасно работает:

var $artistip = null;

var $chkbx = $('input[name="artist"]');

$chkbx.change( function(){
var $checked = $(this).prop('checked');

if($checked) {
    $artistip = $(this).val();

}else {
    $artistip = null;

}


});

Я хочу превратить весь этот код в именованную функцию, например:

$djchkbx.change( function() {
getCheckBoxValue($djchkbx,$djtip);});
var $djtip = null;

var $djchkbx = $('input[name="dj"]');

function getCheckBoxValue(thisckbox, $uniqueVariable){
var $checked = $djchkbx.prop('checked');
console.log($checked);

if($checked) {
    $uniqueVariable = $(this).val();
    console.log('Checked');
    console.log($uniqueVariable);
}else {
    $uniqueVariable = null;
    console.log('Un Checked');
    console.log($uniqueVariable);
}

}

Проблема в том, что я продолжаю становиться ложным.

Оригинальный код работает как шарм. Созданная мной именованная функция не работает должным образом, просто возвращает false.

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

1 ответ

Решение

Сначала очистите ваш код. Переместить все var объявления наверх. Затем удалите параметры функции getCheckBoxValue - вы все равно не используете их или, по крайней мере, не разумно. В вашем change Обработчик вызывает вашу именованную функцию следующим образом:

getCheckBoxValue.call(this);

Сюда, this в вашей названной функции будет то же самое this как в вашем обработчике событий.

В вашей именованной функции вы можете получить доступ к элементу checkbox, как в вашем фрагменте кода: $(this)

приписывать $(this).val() или же null прямо к $djtip - присвоение параметру функции не имеет никакого смысла. Если вы не можете напрямую назначить $djtip Поскольку именованная функция используется в разных контекстах, верните значение и выполните присваивание в функции-обработчике анонимного события.

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