2012-02-08 4 views
0

나는 큰 소스 파일이 너무 여기를 공유하지 않는했지만 제가하는 데 문제는 내가 다음 코드를 사용하여 클릭 이벤트를 추가 할 수 없습니다 해요이다 : 나는이 코드를 사용하는 경우on 이벤트가 실패 할 수있는 상황은 무엇입니까?

$(document).on('click','#test' + testId , function(e){ 
      console.log('I was clicked'); 
     }); 

을 별도의 파일에, 그것은 작동하지만 내 실제 소스에, 나는 이벤트를 전달 드릴 수 없습니다 :(이유가 무엇인지?

+3

이유는''#test '+ testId'로 식별하기를 원하는 요소가 실제로 존재하지 않기 때문일 수 있습니다. 당신이 자바와 HTML의 모든 관련 부분을 볼 수있는 이점을 가지고 있기 때문에 대답을 추측 할 수있는 능력은 나의 것보다 낫습니다. –

+0

요소가 아닌 문서에 이벤트를 첨부 했으므로 이벤트 전달시 요소가 존재하지 않아도됩니다. – wasimbhalli

+1

요점은 요소가 ** 존재하지 않을 수도 있다는 것이었고 요소의 ID는 ' 다시 클릭하는 것은'testId' 변수를 사용하여 셀렉터에 지정된 ID와 같지 않습니다. –

답변

0

으로 전파를 중지합니다. 나는 엘리먼트가 아닌 신체에 이벤트를 붙이고 있었기 때문에 이것을 기대하지 않았습니다. 요소는 이벤트를 바디에 첨부 할 때 실제로 존재하지 않으므로 이벤트가 전달되지 않습니다.

0

당신의 문서를로드해야합니다 또는 요소 '#test' + testId 적어도 존재해야합니다.

<body onload="init()"> 

그리고 여기에 자바 스크립트 f 기름 부음 :

function init() 
{ 
    $(document).on('click','#test' + testId , function(e){ 
     console.log('I was clicked'); 
    }); 
} 
+1

그는''#test '+ testId'가 아니라'document'에 이벤트를 첨부했습니다. 그것은 아니에요 – gdoron

+0

오 하나님. 그러지 마. HTML 속성의 Javascript는 무시 무시합니다! –

0

무슨 이유가 될 수 있는가?

  1. #test + testId 요소가 존재하지 않습니다.
  2. 다른 이벤트 핸들러는 내가에서는 setTimeout 방법으로 코드를 작성하고이 문제를 해결 e.stopPropagation() 또는 return false;
+0

e.preventPropagation()이 없습니다. 또는 내 코드에서 false를 반환합니다. jquery 이벤트에 이러한 명령문이 있습니까? 마찬가지로 'click'이벤트에서 전파를 멈출 수 있습니까? false를 반환하는 경우에만 – wasimbhalli

+0

@wasimbhalli. ''#test '+ testId'와 함께 경고를 표시해보십시오. 요소가 실제로 있는지 확인하십시오. – gdoron

+0

네, 요소를 만들고 테스트 해봤는데 존재합니다. 그런데'on' 메서드가 라이브를 대신하지 않습니까? 나중에 요소가 DOM에 추가되면 작동해야합니까? – wasimbhalli

관련 문제