2012-09-11 3 views
0

I 현재는 A document.ready 블록에 다음이 가진 요소의 jQuery 이벤트 처리기를 추가 :와일드 카드 ID를

 $("[id^=summaryDetailLink_]").each(function(index) { 
     var splitID = this.id.split("_"); 
     this.click(alert('clicked: '+splitID[1])); //toggleDetail(splitID[1]) 
    }); 

가 궁극적으로 내가 "summaryDetail_"의 ID와 TD가 클릭 될 때 감지하고 싶은 toggleDetail 함수를 TD.ID 특성에서 가져온 ID로 시작합니다.

위의 내용은 올바른 ID (경고 팝업)를 생성하는 것으로 보이지만 요소를 클릭 할 때보 다 페이지가로드 될 때 실행됩니다.

문제 번호 1 - 각 요소를 클릭하고 해당 클릭을 기다리는 대신 핸들러를 생성하는 대신 페이지로드시 문제가 발생하는 이유는 무엇입니까?

문제 번호 2,이 문제를 읽으면서 TD 대신 테이블에 단일 이벤트 처리기를 만든 다음 TD 요소를 클릭했는지 확인하는 것이 더 바람직합니다. 어떻게 코드를 변환합니까?

$(function() { 
    $("[id^=summaryDetailLink_]").click(function() { 
     var splitID = $(this).id.split("_"); 
     alert('clicked: '+splitID[1]) 
    }); 
} 

답변

1

대답 첫 번째 질문에 :

+0

"$ (this)"를 코드에서 "this"로 변경 한 후 완벽하게 작동했습니다. 감사. – DaFoot

1

난 당신이 클릭 처리기의 작동 방식을 오해 것 같아요 두 번째 질문에

$(function() { 
    $("[id^=summaryDetailLink_]").click(function() { 
     var splitID = $(this).id.split("_"); 
     alert('clicked: '+splitID[1]) 
    }); 
} 

대답, 당신은이 작업을 수행 할 수 있습니다

$('table#yourtable').on('click', '[id^=summaryDetailLink_]', function(e) { 
    var splitID = $(this).id.split("_"); 
    alert('clicked: '+splitID[1]) 
});