Я пытаюсь написать общий код
var rodd = $('#checkBox');
Я хочу передать rodd в функцию и проверить, проверено ли оно
Callme(rodd);
$(rodd).click(function() {
Callme(this);
});
function Callme(rodd){
if(this.checked){
// do some behavior
}
}
Я пытаюсь написать общий код
var rodd = $('#checkBox');
Я хочу передать rodd в функцию и проверить, проверено ли оно
Callme(rodd);
$(rodd).click(function() {
Callme(this);
});
function Callme(rodd){
if(this.checked){
// do some behavior
}
}
Если rodd
- объект jQuery:
function Callme(rodd) {
if (rodd.is(":checked")) {
// ...
}
}
или
function Callme(rodd) {
if (rodd[0].checked) {
// ...
}
}
Это должно работать:
//Assuming rodd is a jquery element
Callme(rodd);
rodd.click(function() {
Callme($(this));
});
function Callme(rodd){
if(this.is(":checked"){
// do some behavior
}
}
помните, что прослушиватель событий указывает на элемент DOM, а не на элемент jquery. Поэтому вам нужно преобразовать это в элемент jquery, используя выражение $(this).
Посмотрите на свой код, передав объект jQuery, rodd
, в функцию, чтобы вернуть объект jQuery $(rodd).click...
Это может быть проще сделать
$('#checkBox').click(Callme);
function Callme(rodd){
if(this.checked){
// do some behavior
}
}
или
$('#checkBox').click(Callme);
function Callme(rodd){
if($(this).is(':checked')){
// do some behavior
}
}
это также устраняет обработчик событий анонимной функции, который выполняет только Callme()
, проходящий в целевой точке события. Рабочая демонстрация здесь.
EDIT:
В настоящее время Callme(rodd)
выше ожидает передачи HTMLElement object
. Если вы хотите иметь возможность передать объект jQuery, просто перейдите на этот
$('#checkBox').click(function(event) {
Callme($(event.target));
});
function Callme(rodd){
if(rodd.is(':checked')){
alert('checked');
}
}
хотя лично я бы сохранил его как элемент, который нужно передать, и сделать обертку в функции Callme
. вы можете рассмотреть возможность префикса параметра rodd
с помощью $
, чтобы было очевидно, что ожидается объект jQuery.