요소를 참조하고 DOM에 추가하는 jQuery 객체를 몇 개 만듭니다. 나는 이름으로 그들을 참조 할 수 있기를 바란다. 그래서 그들에게 이벤트를 묶는 셀렉터들을 사용할 필요가 없다. 나는 "닫기"버튼을 클릭하고 "래퍼"를 숨길 수 있도록하려면jquery를 이름으로 생성 한 후에 참조 된 요소를 참조 하시겠습니까?
<div class="body>
</div>
$(document).ready(function(){
wrapper = $("<div />")
.addClass("wrapper")
.click(function(e){
if (e.target === this)
$(this).hide();
})
$('.body').wrap(wrapper);
close = $("<button />")
.addClass("close")
.text('CLICK TO CLOSE')
.click(function(e){
///HIDE ".wrapper" FROM HERE
$(wrapper).hide();
///HIDE ".wrapper" FROM HERE
})
.prependTo($('.body'));
})
: 여기에 아래로 무식 예제 코드의 입니다. 내가 을 사용하여 그것을 숨길 수는 있지만 여러 래퍼가 될 것이므로 하나만 대상으로해야합니다. 나는 $(this).closest('.wrapper').hide()
를 사용할 수 있었지만 이제는 지저분 해지고 있습니다. "추가"코드를 모두 피하기 위해 "닫기"내에서 "래퍼"변수를 참조하는 방법이 있습니까?
원하는 구조는 무엇입니까? '.wrapper'는 가장 바깥 쪽 컨테이너입니까? 각'.wrapper' 엘리먼트는 자신의'.body'을 포함합니까? '.close'는'.body'의 자식이거나 형제인가요? – showdev
dom 구조체의 경우 .wrapper가 바깥 쪽입니다. 다음 .body body가 .close (결국 모달입니다. 이것은 단순한 버전입니다). 코드가 DOM에 준비되어 있지 않은 상태에서 init 함수에서 호출되므로 코드가 "모달"당 한 번 호출됩니다. 그러나이를 해결할 수 있다면 모든 것을 적용 할 수 있습니다. 모든 것이 필요하다고 생각한다면 업데이트 될 것입니다. – DasBeasto