gpt4 book ai didi

javascript - jquery ui按钮调用是否影响DOM层次结构

转载 作者:行者123 更新时间:2023-11-30 05:43:56 26 4
gpt4 key购买 nike

我正在使用 jquery 来展开/隐藏一段内容。然后我更改了它,以便用于展开/隐藏内容的链接是一个按钮并且破坏了它。这是我更改为按钮之前的代码:

<body>
<div class="content">
<a class="toggle" href="">Expand box 1</a>
<div class="contentHidden" style="display:none;">Hidden 1</div>
</div>
<div class="content">
<a class="toggle" href="">Expand box 2</a>
<div class="contentHidden" style="display:none;">Hidden 2</div>
</div>
</body>
<script type='text/javascript'>
$(function() {

$(".toggle").click(function(event) {
$(event.target).parent(".content").find(".contentHidden").toggle('slow');
event.preventDefault()

});

});
</script>

但是,如果我将函数更改为以下内容,它将不再有效:

$(function() {

$(".toggle").button({ icons: { primary: 'ui-icon ui-icon-arrowthick-1-e'} });
$(".toggle").click(function(event) {
$(event.target).parent(".content").find(".contentHidden").toggle('slow');
event.preventDefault()

});


});

就好像对 button() 的调用改变了层次结构,我的搜索不再返回 '.contentHidden' div

问候设计

最佳答案

是的,JQuery UI button() 在原始链接下方创建了一个新的层次结构(添加了几个跨度)。其中一个 span 是新的可点击项,所以它会因为这个原因出错(点击的元素比以前更深一层),所以使用 closest 而不是 parent :

$(".toggle").button({
icons: {
primary: 'ui-icon ui-icon-arrowthick-1-e'
}
});
$(document).on('click', '.toggle', function (event) {
$(event.target).closest(".content").find(".contentHidden").toggle('slow');
event.preventDefault()

});

在这里工作 JSFiddle:http://jsfiddle.net/HxKLy/

另一个问题,使用点击而不是说延迟 on 在这种情况下实际上是一个转移注意力的问题,但我将在下面保留以供引用。

通过点击绑定(bind)到特定的 DOM 元素,意味着一旦您更改了 DOM,点击事件就会被分离。通常,您会希望使用 on 的延迟调用语法而不是 click,但在这种情况下,它没有任何可能性。

例如

$(document).on('click', '.toggle', function(event)...

代替

$(".toggle").click(function(event) 

只是为了证明这不是实际问题,这里是点击返回的 fiddle 变体:

http://jsfiddle.net/HxKLy/1/

关于javascript - jquery ui按钮调用是否影响DOM层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19118578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com