2009-11-04 5 views
2

저는 비교적 jQuery에 익숙하지 만 아래 코드는 논리적으로 보이지만 예상대로 작동하지 않습니다. 나는 Colorbox jQuery plugin을 이용하고 있습니다.특정 요소에 대해서만 jQuery 이벤트에 바인딩

내 의도는 'Remove'가 포함 된 ID를 가진 'a'요소에 대해서만 'cbox_closed'이벤트에 대한 수신기를 추가하는 것입니다. 불행히도, 현재 구현되어있는 것처럼 'cbox_closed'이벤트의 모든 레이스에 리스너를 추가합니다.

뭔가가 누락 되었습니까, 아니면 이것이 이벤트 수신기를 추가하는 유효한 방법이 아닌가요?

$('a[id*="Remove"]').bind('cbox_closed', function() { 
    var row = $($.fn.colorbox.element()).parents('tr'); 
    row.fadeOut(1000, function() { 
     row.remove(); 
    }); 
}); 
+1

잘못된 것은 아닙니다. 표시되는 문제는 'cbox_closed'이벤트 *를 전역 적으로 만 (즉, 특정 요소가 아닌) 트리거링을 지원하는 색상 상자 때문입니다. 의심스러운 경우 http://colorpowered.com/colorbox/core/colorbox/jquery.colorbox.js ('cboxPublic.close'검색) 소스로 이동하십시오. '$ .event.trigger (cbox_closed)'를 볼 수 있습니다. –

+0

@ahsteele : 음, 내 의견은 문제를 해결하지 못하고 해결할뿐입니다. @ fudgey의 최근 답변을 시도 했습니까? –

+0

@CrescentFlash 나는 그것을했고 트릭은 당신이 그것을보기 전에 내 의견을 죽이려고했다. 나는 X를 치기 전에 새로 고쳐야했다.;) – ahsteele

답변

4

이 시도 문제를 오해

$("a[id*='Remove']").bind('cbox_closed', function() { 

해야합니다

$(document).bind('cbox_closed', function() { 
    if ($($.fn.colorbox.element()).attr('id').match('Remove')){ 
    alert('Remove me!'); 
    } 
}) 

이벤트는 ColorBox가 닫힐 때 항상 트리거됩니다. 이 이벤트가 특정 경우에 실행되지 않도록 플러그인 자체를 수정해야합니다. 따라서 위 코드는 이벤트에 바인딩 한 다음 특정 ID를 찾습니다. 내 설명이 도움이되기를 바랍니다.

0

하지 그 당신은 Remove

주위 qoutes를 누락하는 것 또는 내가

+0

내가 잘못 본 것이 아니라면 바운드 이벤트 이후에 ID가 변경되고 더 이상 ID가 제거되지 않을 때 인스턴스를 참조한다고 생각합니다. 바인드 이벤트는 여전히 코드에서 해당 앵커에 바인딩됩니다. –

+0

따옴표가 없지만 불행히도 차이가 없습니다. :( – ahsteele

관련 문제