2016-09-13 1 views
-2

안녕하세요, 특정 클래스로 페이지의 모든 요소를 ​​타겟팅하려고합니다. 쿼리 변경 기능을 실행하는 데 문제가 있습니다. 그래서 여러 가지를 시도했지만 여전히 발사가 아닙니다. 그것은 처음 시작할 때 페이지를로드하지만 결코 실행하지 않고 'this'에 변경 기능이 없다는 오류 메시지가 표시됩니다. 그러나 이것이 내가 무엇을 기록 할 때 이것은 분명히 체크 박스임을 보여줍니다. 어쨌든 어떤 도움을 주시면 감사하겠습니다.이 일은 매우 쉬운 일이며, 나는 작은 것을 놓치고 있다고 상상합니다.내 jquery 변경 이벤트가 실행되지 않는 이유는 무엇입니까?

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

을'this'이 될 것입니다 JS의 범위에 대한 참조가 아닌 요소입니다 ... :'$ (이)' –

+0

쿨 ... 그 이상으로로드 후 체크 박스를 변경하면 여전히 실행되지 않습니다. – Seamy

+1

코드가 어떤 이벤트도 듣지 않기 때문에'$ (document) .on ("change", ".rcbCheckBox", function() {your code});'시도하십시오 ... –

답변

5

당신은 change은 jQuery를 기능이기 때문에, undefined을 반환하는 this.change 전화하는거야.

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

고마워 .... 나는 어리석은 짓을하고 있다는 것을 알고 있었다 .... 감사합니다. – Seamy

+0

그래서 한 번 이상 발사하지 않습니다. 다시 페이지를로드 할 때 발동하지만 확인란을 변경하지 마십시오. – Seamy

+0

당신은 change 메소드의 인자로 함수를 전달해야합니다. – 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 ("Changed "));'의미가 없습니다. – charlietfl

0

change() 함수는 jQuery의 API의 일부입니다. 일반 DOM 객체에는 jQuery의 기능이 포함되어 있지 않습니다. ,

var checkbox = $(this); 

는 또한, 코드가 무엇 console.log("Changed") 반환 change 이벤트에 대한 핸들러로 전달합니다 짧은에 의해

var checkbox = jQuery(this); 

또는 : 당신은 JQuery와 funcion에 DOM 객체를 전달 새로운 jQuery를 개체를 만들 수 있습니다 이는 기능이 아닙니다.

당신은 또한이

$(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

관련 문제