2017-11-16 8 views
-1

이벤트 핸들러를 사용하여 메시지를 변경했지만 링크를 클릭 한 후 메시지가 변경되지 않았습니다.jquery 이벤트 처리기가 값을 변경하지 않는 이유는 무엇입니까?

$("a").bind("click", function(event) { 
    $(event.target).text('Changed msg'); 
}); 

이 같이 단락 될 수있다 : 당신이 앵커 태그의 텍스트를 변경하려면

$("a").bind("click", { message : msg }, function(event) { 
    msg = "Changed msg"; 
    alert(event.data.message); 
    }); 
+1

... 이것이 작동하는 방식이 아니기 때문에 ... 임의로 변수의 값을 설정하고 객체의 속성을 변경한다고 기대할 수는 없습니다. 글쎄, 네가 그걸 기대할 수는 있겠지만 너는 틀릴거야. –

+0

http://api.jquery.com/bind/ eventData에 대한 섹션을 읽으십시오.이 섹션은 – Huangism

+0

오라고 생각하지 않습니다. 나는 정상적인 변수처럼 작동한다고 생각했다. 임의의 값을 지정하여 변경할 수는 없습니다. –

답변

1

, 당신은 그렇게 like this 할 수 있습니다 : 여기

<a href="javascript:void(0);">Test 1</a> 
<a href="javascript:void(0);">Test 2</a> 

는 자바 스크립트 파일입니다 this은 이벤트 핸들러 내부에서 event.target 또는 함수를 바인딩 한 항목 (앵커 태그)을 나타냅니다. 따라서 다음과 같이 작성할 수 있습니다.

$("a").bind("click", function() { 
    $(this).text('Changed msg'); 
}); 

DOM (문서 개체 모델)을 변경하기 위해 값을 간단히 설정할 수 없습니다. jQuery에게 당신이하고 싶은 것을 말하기 위해서는 texthtml과 같은 메소드를 사용할 필요가있다. vanilla JavaScript으로 그렇게 할 수 있습니다.

설명에서 언급했듯이 eventData은 이벤트 처리기에 길게 전달할 수있는 객체입니다. 그러나 그것은 변화 시키거나 변화시킬 수 없습니다.

+0

또는'$ (this) '를 사용하십시오. – Huangism

+0

@Cymen 내 코드의 문제점은 무엇입니까? 왜 이런 식으로 할당하여 값을 바꿀 수 없습니까? 말해 주시겠습니까? –

+0

@ TazbirulHaque 당신은 무작위로 바인드 함수에 매개 변수를 추가 했으므로 –