【发布时间】:2016-07-07 00:33:21
【问题描述】:
我正在创建一些引用元素并将它们附加到 DOM 的 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'));
})
我希望能够单击“关闭”按钮并隐藏“包装器”。我可以使用$('.wrapper').hide() 隐藏它,但是会有多个包装器,它只需要针对一个。我可以使用$(this).closest('.wrapper').hide(),但现在它变得一团糟。有没有办法从“close”中引用“wrapper”变量来避免所有额外的代码?
【问题讨论】:
-
所需的结构是什么?
.wrapper是最外面的容器吗?每个.wrapper元素是否都包含自己的.body?.close是.body的孩子或兄弟姐妹吗? -
是的,对于 dom 结构 .wrapper 是外部然后 .body 然后内部是 .close (它们最终是模态,这只是简单的版本)。在代码中而不是在准备好的 DOM 中,这是在 init 函数中调用的,因此每个“模态”都会调用一次代码,但我想如果我可以解决它,我可以将它应用于所有。如果您认为这是必要的,将会更新。