다음은 내 Jquery Ajax 메뉴 코드입니다.
$(document).ready(function(){
$('#electronics').on('click',function(e){
$.ajax({
url:'<?php echo HTTP; ?>in_megaM.php',
type:'POST',
cache:false,
data: 'electronics=yes',
success:function(data){
$('#showmenus').show();
$('#showmenus').html(data);
}
});
});
});
$( document ).on( 'click', function ( e ) {
if ( $( e.target ).closest('#showmenus').length === 0 ) {
$('#showmenus').hide();
}
});
$( document ).on( 'keydown', function ( e ) {
if ( e.keyCode === 27 ) { // ESC
$('#showmenus').hide();
//alert(1);
}
});
<ul class="menu">
<li class="nodrop"><a href="<?php echo HTTP; ?>"><span class="homeIC"> </span></a></li>
<li class="nodrop"><a href="#" id="electronics">Electronics</a></li>
<li class="nodrop"><a href="#" id="storage">Storage</a></li>
<li class="nodrop"><a href="#" id="entertainment">Entertainment</a></li>
<li class="nodrop"><a href="#" id="lifestyle">Lifestyle</a></li>
<li class="nodrop"><a href="<?php echo HTTP; ?>coupons/coupons-home.php">Coupons</a></li>
</ul>
<div id="showmenus"></div>
문제는 전자 제품 탭을 클릭하면 메뉴가 열립니다. 다시 전자 제품 탭을 클릭하면 메뉴가 숨겨지지 않습니다. 대신 다시 열립니다.
왜 거기에 PHP가 있는지 모르겠습니다. 서버에서 실행되도록 보내지 않기를 바랍니다.하지만 전자 탭을 클릭했을 때 당신이 지시 한대로 정확히하고 있습니다. 문서도 마찬가지입니다. 그것이 닫히고 다시 열리는 이유입니다. (물론 ajax 호출이 스위치를 볼 수있는 이유입니다.)
클래스 또는 데이터 속성의 형태로 토글 플래그를 추가해보십시오.
$('#electronics').on('click',function(e){
if (menus.hasClass('open')) {
menus.hide();
menus.removeClass('open');
} else {
$.ajax({
url:'<?php echo HTTP; ?>in_megaM.php',
type:'POST',
cache:false,
data: 'electronics=yes',
success:function(data){
var menus = $('#showmenus');
menus.show();
menus.html(data);
menus.addClass('open');
}
});
}
});
$( document ).on( 'click', function ( e ) {
if ( $( e.target ).closest('#showmenus').length === 0 ) {
$('#showmenus').removeClass('open');
$('#showmenus').hide();
}
});
$( document ).on( 'keydown', function ( e ) {
if ( e.keyCode === 27 ) { // ESC
$('#showmenus').removeClass('open');
$('#showmenus').hide();
//alert(1);
}
});
다른 방법을 통해 닫을 때 플래그를 해제해야합니다. 이렇게하면 단순히 메뉴를 닫는 경우 AJAX 호출이 전혀 발생하지 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다