gpt4 book ai didi

jquery - 在不同函数中对同一元素使用 hide()

转载 作者:行者123 更新时间:2023-12-01 04:59:45 25 4
gpt4 key购买 nike

好吧,这是我使用 JQuery 的第一天,所以享受我制作的这些函数的乐趣吧。我试图在单击不同的触发器时隐藏 div (#panel)。下面是三个函数,其中三个函数在使用时都需要隐藏(#panel)。我的设置方式仅适用于第一个功能。另外两个不隐藏该元素。所以,不用多说。

jQuery(document).ready(function($){
var $panel = $(this).closest(".panel-container").find(".panel");
$('#searchsubmit').click(function(e){
$('#boxes').empty();
e.preventDefault();
var $panel = $(this).closest(".panel-container").find(".panel");
var search_val=$("#s").val();
$.post(
WPaAjax.ajaxurl,
{
action : 'loop_search',
search_val : search_val
},
function( response ) {
$('#boxes').append( response ).masonry( 'reload' );
$panel.hide("slow");
$('.trigger').removeClass("active");
$('.trigger-loop').removeClass("active");
}
);
});
$('#fame.trigger-loop').click(function(){
var $panel = $(this).closest(".panel-container").find(".panel");
$('.trigger').removeClass('active');
$('.trigger-loop').removeClass('active');
$('#fame.trigger-loop').addClass('active');
$('#boxes').empty();
$.post(
WPaAjax.ajaxurl,
{
action : 'loop_fame'
},
function( response ) {
$('#boxes').append( response ).masonry( 'reload' );
$panel.hide("slow");
}
);
});
$('#new.trigger-loop').click(function(){
var $panel = $(this).closest(".panel-container").find(".panel");
$panel.hide("slow");
$('.trigger').removeClass('active');
$('.trigger-loop').removeClass('active');
$('#new.trigger-loop').addClass('active');
$('#boxes').empty();
$.post(
WPaAjax.ajaxurl,
{
action : 'loop_new',
},
function( response ) {
$('#boxes').append( response ).masonry( 'reload' );
$panel.hide("slow");
}
);
});

});

//--html

<li>
<a id="fame" class="trigger-loop active" href="#"><div id="fame-icon"></div></a>
</li>
<li>
<a id="new" class="trigger-loop" href="#"><div id="gold-artist"></div></a>
</li>
<li>
<div class="panel-container">
<div class="panel">
<----content----->
</div>
<a class="trigger" href="#"><div id="playlist-icon"></div></a>
</div>
</li>
<li>
<div class="panel-container">
<div class="panel">
<----content----->
</div>
<a class="trigger" href="#"><div id="random-icon"></div></a>
</div>
</li>

最佳答案

问题是您有一个全局变量被覆盖并导致不良影响。

var $panel = $(this).closest(".panel-container").find(".panel");

该行会将 $panel 设置为全局变量,因为除了 document.ready 之外它没有父作用域。当您位于其中一个回调闭包内时,再次定义 $panel 时会出现利益冲突。考虑更改这些名称以消除冲突。

结果是在内部时调用全局$panel

function( response ) {
$('#boxes').append( response ).masonry( 'reload' );
$panel.hide("slow");
}

而不是调用您想要的本地化版本。这就是为什么只有一个人隐藏起来。

关于jquery - 在不同函数中对同一元素使用 hide(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11269962/

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