을 다시 열 때, 내가 지금처럼, 반드시 href를 사용하여 내 fancyBox 바인딩 생성 :여러 이벤트 핸들러가 호출 페이지에서 fancyBox
myContent.cfm, 기본 "필터"에서<a id="myId" href="myContent.cfm">Click me</a>
<script>
$(document).ready(function(){
$('a#myId').fancybox({
// my initialization params
});
});
</script>
가 내장되어, 가지고있는 추가 단추를 삭제하십시오. 이런 식으로 뭔가 다음 AddFilter를 버튼을 클릭하면
<div id="fd_0" class="eachFilter blank">
<select name="filterBy" class="fl filterBy">
<option selected="selected">-- Add a Filter --</option>
<!--- add more options --->
</select>
<button type="button" class="addFilter default" title="Add a filter to the current filter set.">+</button>
<button type="button" class="deleteThisFilter default" title="Delete this filter from the current filter set.">-</button>
</div>
, 새로운 "기본"필터가 연속 ID를 사용하여 클릭 된 필터 후 DOM에 추가됩니다. 반대로 deleteFilter 버튼을 클릭하면 해당 필터가 삭제되고 나머지 모든 필터의 ID는 번호가 다시 매겨집니다. 단 하나의 필터가 남아 있어야한다는 점만 다릅니다. 내 원래 코드과 같이 새로 생성 된 요소에 이벤트 핸들러를 연결하는 .live()를 사용 : 사용자가 그들이 필요로하는 모든 "필터"를 만들었습니다
$('.addFilter).live('click', function(){
// get number of existing filters
// create new blank filter
// add to the dom after the filter whose button was just clicked
});
$('.deleteThisFilter).live('click', function(){
// if there is more than one existing filter, use .remove() to remove the parent .eachFilter div
// renumber the existing filter ids consecutively
});
후,이 중 하나를 "적용"수를, 어떤 fancybox를 닫고 필터링 된 새 매개 변수로 그리드를 다시로드하거나 단순히 fancybox를 취소하고 닫습니다.
이 모든 것이 처음에는 정상적으로 작동하고 fancybox를 다시 열면 초기 빈 필터의 추가 버튼이 예상대로 작동합니다. 그러나 두 번째 필터를 추가하면 dom에 추가 된 모든 필터에 addFilter 및 deleteFilter 단추에 여러 이벤트 처리기가 추가됩니다. 처음으로 하나의 필터를 추가 한 다음 두 번째로 fancybox로 돌아온 다음 기본 필터의 추가 버튼을 클릭하여 필터를 추가 한 다음 새로 생성 된 필터 추가 버튼을 클릭하면 두 개의 필터가 추가됩니다. 닫은 후 fancybox를 다시 열어 필터를 추가하고 해당 필터 추가 버튼을 클릭하면 세 개의 필터가 더 추가됩니다.)
1)가 .live (를 변경 필터를 생성하는 코드를 넣는
$(document).on('click', 'addFilter', function(){ // add my filter code});
2) 호출 : 그래서 여기
는 지금까지 시도했습니다 무엇 마지막으로 .bind()을 사용하여 새로 생성 된 필터에 이벤트 처리기를 추가하는 함수로; 그 다음에 팬시 박스를 닫을 때
$('.addFilter').unbind('click', fnCreateMyFilter())
을 사용합니다. 사용
3).live()는 현재 버전 1.8.3의 기본 요소
4) 업그레이드 jQuery를에 새로 생성 된 필터 요소 및 일반 클릭 핸들러에 I는 인상 이었지만
5)합니다 (fancybox 내부의 모든 요소 기능 .remove()를 호출 .onClosed fancybox를 닫으면 실제로 dom에서 요소가 제거됩니다.
의견이 있으십니까?
.live()가 jQuery 1.7에서 실제로 depracated되었음을 확인했습니다. – HeyWatchThis