2014-11-05 3 views
0

내 웹 사이트의 친구 태그 시스템을 개발하려고합니다.

제목이있는 div 태그를 둘러싼 앵커 태그가 있습니다. 제목을 검색하는 데 다음 코드를 사용하려고하지만 결과는 항상 정의되지 않습니다.

<a href="#" class="add-link" onclick="addFunc()" title="test1"> 
    <div class="divclass"> 
     blabla  
    </div> 
</a> 
function addFunc(){ 
    var username = $(this).attr('title'); 
    $('#content').html(username); 
} 

http://jsfiddle.net/0f4mun8r/3/

어떤 생각이 왜 ?

감사합니다.

+1

$입니다. Javascript 기능을 사용하고 있습니다. –

+0

정말 펑키 한 (그리고 깨진) 범위 지정을 사용하는 onclick 이벤트 속성에서'this'가 깨졌습니다. 여기 http://jsfiddle.net/d130j1eh/로갑니다. 나는 당신이'addEventListener'와 같은 더 좋은 제네릭 바인딩을 보길 제안합니다. (어쨌든 왜 여기에 jQuery가 필요한가?) –

답변

1

귀하는 귀하의 피들에 jquery를 포함시키지 않았습니다. 이런 식으로 이벤트를 바인딩 또한 jQuery를 사용하는 경우 :

$(".add-link").on("click", function addFunc(){ 
    var username = $(this).attr('title'); 
    $('#content').html(username); 
}); 

http://jsfiddle.net/0f4mun8r/4/

+0

고마워요! 이것은 내 문제를 해결했습니다. – Thomas

4

세 가지 문제가 있습니다. 먼저


은 :

당신은 온로드 핸들러에 모든 코드를 래핑하는 JS 바이올린을 구성했습니다. 이렇게하면 addFunc을 호출 할 때 찾을 수없는 전역 기능이 중지됩니다. 둘째


: 당신은 jQuery를 요구하고 있지만, jQuery 라이브러리를 포함하지 않은

. 셋째


:

this의 값은 함수 호출 방법에 따라 달라집니다.

onclick 함수가 호출되면 this이 요소입니다.

addFunc이 호출 될 때 (다른 문제를 수정하는 경우) 컨텍스트를 지정하지 않았으므로 thiswindow (기본 개체)입니다.


내장 이벤트 속성을 사용하지 마십시오. 자바 스크립트로 이벤트 핸들러를 바인딩하십시오.

jQuery(".add-link").on('click', addFunc); 

그리고 당신은 당신의 페이지에 jQuery를, 다음 include the library를 사용하는 경우.

+0

또한 바이올린에는 jQuery가 포함되어 있지 않습니다. – Cerbrus

+0

내 자신의 이익을 위해'JQuery ('add-link'). on ('click', func)'과'JQuery ('add-link'). – DavidT

+1

[docs] (http://api.jquery.com/click/)에서 : *이 방법은'.on ("click", handler)'* – Quentin

0

시도는 클래스 이름으로 호출 : (이) JQuery와 객체가

$('.add-link').click(function() { 
    var username = $(this).attr('title'); 
    alert(username); 
    $('#content').html(username); 
}); 
관련 문제