gpt4 book ai didi

jquery - 尝试触发影响子元素的函数,有点像

转载 作者:行者123 更新时间:2023-12-01 01:37:08 24 4
gpt4 key购买 nike

我正在尝试创建一个类似 Accordion 的博客功能,首先您会看到一组行(准确地说是 100 像素),当您单击博客标题时,博客文章会扩展到其完整高度。

这是我到目前为止所拥有的:

HTML:

                    <ul class="blog">

<li class="list-item">
<div class="list-item-left">
<h2 class="expand">Project Eden</h2>

<time>07.08.2012</time>
</div>
<div class="list-item-right">
<p>"Sed ut perspiciatis unde </p>
</div>
<div class="list-item-whitespace"></div>
</li>

<li class="list-item">
<div class="list-item-left">
<h2>Project Eden</h2>

<time>07.08.2012</time>
</div>
<div class="list-item-right">
<p>"Sed ut perspiciatis unde</p>
</div>
<div class="list-item-whitespace"></div>
</li>

</ul>

jQuery:

var $listItems = $('.list-item');
var closedHeight = 100;
var slideSpeed = 1000;

$(".list-item").click(function() {
if($(".list-item:animated").length)
return false;
}).toggle(function() {
var openHeight = $(this).parents("div:first").find(".list-item-right").height();
$(this).animate({height:openHeight}, slideSpeed,"easeOutExpo");
$(this).children('.list-item-whitespace').css({'display':'none'});
}, function(){
$(this).animate({height:100}, slideSpeed,"easeOutExpo");
$(this).children('.list-item-whitespace').css({'display':'block'});
});

基本上我们正在做的事情(据我了解,对于 jQuery,我还是个新手!):

我们在变量中存储一些信息,然后定义一个函数,它将将 .list-item 扩展到 .list-item-right 的实际高度,当我们再次单击它时,它将恢复为它的“闭合”高度为 100px。

现在,我想做的是在单击 .list-item 时不要触发 .toggle 事件或 .click 事件。

相反,我希望它仅在您单击 .expand 类或 .list-item-left h2 (如果您愿意)时触发。

如果这对任何人有意义,请告诉我我在哪里不知所措。

最诚挚的问候,K.

最佳答案

我就是这么做的。它需要稍微重构你的 html。您将列表项内容包含在父 div 中。您可以使用它来找出非溢出高度是多少。

当您展开列表项时,您会添加一个开放类或封闭类,以便您了解状态。

我还摆脱了我想象中的清除 div 并给容器 div overflow: auto 这导致包含的元素自行清除。

http://jsfiddle.net/WZVb6/1/

//set all blog posts to 100px to start
$('li.list-item h2').click(function() {
$this = $(this);
var nheight = $this.closest('.naturalheight').height();

if ($this.hasClass('open')) {
$this.closest('li').animate({
height: 100
});
$this.removeClass('open');
}
else {
$this.closest('li').animate({
height: nheight
});
$this.addClass('open');
}

});​

关于jquery - 尝试触发影响子元素的函数,有点像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10377721/

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