2016-09-13 3 views
-2

Эй, поэтому я пытаюсь настроить таргетинг всех элементов моей страницы на определенный класс. У меня возникла проблема с тем, чтобы запустить функцию изменения запроса. Поэтому я пробовал много вещей, и все же это не стрельба. Он будет срабатывать в самом начале, когда я загружаю страницу, но никогда после нее, и я получаю сообщение об ошибке, говорящее, что «это» не имеет функции изменения. Однако, когда я регистрирую то, что это ясно показывает, это флажок. В любом случае любая помощь будет оценена по достоинству, так как это должно быть очень просто, и я полагаю, что мне не хватает чего-то маленького.Почему мое событие изменения jquery не срабатывает?

 $(".rcbCheckBox") 
      .each(function() { 
        console.log(this); 
        this.change(console.log("Changed")); 
       }); 
     }); 
+0

'this' является ссылкой на сферу в JS, а не элемент ... который будет:' $ (это) ' –

+0

Круто ... кроме этого, хотя он все равно не срабатывает, когда я меняю флажок после загрузки? – Seamy

+1

try '$ (document) .on (" change "," .rcbCheckBox ", function() {your code});' потому что ваш код не прослушивает какое-либо событие ... –

ответ

5

Вы звоните this.change, который будет возвращать undefined, потому что change функция JQuery. Для того, чтобы получить эту работу использование:

$(this).change(function(){console.log(this)}) 
+0

Спасибо, человек .... Я знал, что я делаю что-то глупое .... Спасибо – Seamy

+0

Так что он все еще не стреляет более одного раза ... снова это только стрельба, когда я загружаю страницу, но никогда, когда я меняю этот флажок? – Seamy

+0

вам необходимо передать функцию в качестве аргумента методу изменения. – brianyang

1
$(".rcbCheckBox") 
     .each(function() { 
       console.log($(this)); 
      }); 
    }); 

Использование $ (это) вместо этого.

Демо: https://jsbin.com/niqefe/2/edit?html,js,console,output

+0

Так что он все еще не стреляет не один раз ...снова это только стрельба, когда я загружаю страницу, но никогда, когда я меняю флажок? – Seamy

+0

Я сделал несколько демонстраций: проверьте этот бит однажды, надеюсь, это поможет: https://jsbin.com/niqefe/2/edit?html,js,console,output – KrishCdbry

+0

'$ (this) .change (console.log (" Изменено "));' не имеет смысла – charlietfl

0

change() функция является частью API JQuery в. Обычные объекты DOM не включают функции jQuery. Вы можете создать новый объект JQuery проходящего объект DOM к несильно JQuery:

var checkbox = jQuery(this); 

Или кратковременным:

var checkbox = $(this); 

Кроме того, ваш код проходит в качестве обработчика для change случае какого console.log("Changed") возвращается, которая не является функцией.

Вы должны сделать что-то вроде этого

$(this).change(function(){ console.log("Changed"); }); 

Кроме того, обратите внимание на ошибку синтаксиса. У вас есть дополнительный }); в вашем примере. Учитывая все сказанное выше, можно попробовать что-то вроде:

$(".rcbCheckBox").each(function() { 
    console.log(this); 
    var checkbox = $(this); 

    var callback = function(){ 
     console.log("Changed"); 
    } 

    checkbox.change(callback); 
}); 
+0

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

+0

@Seamy, я обновил ответ, учитывая замечание – Sam

+0

. Не нужно использовать 'each' вообще для этого – charlietfl