2014-02-03 4 views
2
$(".Personalized").click(function(){ 

    $.ajax({ 

     type:"POST", 
     url:"personalized.php", 
     cache:false, 
     beforeSend: function(){ 
      $('#loading_personalized').show(); 
      $('#triangle-personalized').show(); 
     }, 

     complete: function(){ 
      $('#loading_personalized').hide(); 

     }, 
     success: function(html){ 


      $("#divPersonalized").html(html).show(); 
     } 

    }); 

}); 

, когда я нажимаю на персонализированного класса divPersoanlized показывает вверх ,, теперь я хочу, чтобы скрыть его снова, нажав на personalized..how я могу это сделать ...обнаружить, если класс щелкнул с помощью JQuery

ответ

5

Обычно вы бы просто использовать toggle() для переключения элемента, но в этом случае вы, вероятно, не хотите запустить Аякс вызова, каждый раз, когда

$(".Personalized").click(function(){ 

    if ($("#divPersonalized").is(':visible')) { 

     $("#divPersonalized").hide(); 

    } else { 

     $.ajax({ 
      type:"POST", 
      url:"personalized.php", 
      cache:false, 
      beforeSend: function(){ 
       $('#loading_personalized').show(); 
       $('#triangle-personalized').show(); 
      }, 
      complete: function(){ 
       $('#loading_personalized').hide(); 
      }, 
      success: function(html){ 
       $("#divPersonalized").html(html).show(); 
      } 
     }); 
    } 
}); 
+0

«Обычно вы бы просто использовать переключатель() для переключения элемента, но в этом случае вы, вероятно, не хотите, чтобы запустить Ajax вызов каждый раз, когда» ... Так что разница между кодом и используя toggle? –

+0

С помощью переключателя вы просто переключаете видимость элементов, так как это то, что делает, но способ, которым он выполняется выше, не просто переключает видимость элементов, он также запускает только вызов ajax, когда элемент видим, а не когда он скрыт , поскольку это не имело бы смысла. – adeneo

0

Вы можете проверить, виден ли div, просто скройте его. Вам не нужно звонить Аякс

$(".Personalized").click(function(){ 
    //You can use also use $(this).is(':visible') 
    if($(this).css('display') !== "none"){ 
     $(this).hide(); 
     return; 
    } 

    //Your ajax code 
}); 
2

Например, как это:

$(".Personalized").click(function() { 

    var $divPersonalized = $("#divPersonalized"); 

    if ($divPersonalized.is(':hidden')) { 
     $.ajax({ 
      // ... 
      success: function (html) { 
       // Show the div 
       $("#divPersonalized").html(html).show(); 
      } 
     }); 
    } 
    else { 
     // Hide the div 
     $divPersonalized.hide(); 
    } 
}); 
-1

Вы можете использовать тумблер метода:

$(".Personalized").toggle(ShowFunction, HideFunction); 

    function ShowFunction(){ 
    // your code goes here 
    $.ajax({ 
      type:"POST", 
      url:"personalized.php", 
      cache:false, 
      beforeSend: function(){ 
       $('#loading_personalized').show(); 
       $('#triangle-personalized').show(); 
      }, 
      complete: function(){ 
       $('#loading_personalized').hide(); 
      }, 
      success: function(html){ 
       $("#divPersonalized").html(html).show(); 
      } 
     }); 
    } 

    function HideFunction(){ 
    // your code goes here. 
     $("#divPersonalized").hide(); 
    } 
+1

Устаревшие и удаленные из jQuery! – adeneo

+0

Какая версия jQuery устарела? –

+1

[Устаревший в jQuery 1.8 и удален в 1.9] (https://github.com/jquery/jquery-migrate/blob/master/warnings.md#jqmigrate-jqueryfntogglehandler-handler-is-deprecated) – adeneo

-1

Используйте это:

if($("#divPersonalized").attr("hidden")=="hidden") 
{ 
    $("#divPersonalized").removeAttr("hidden"); 
} 
else 
{ 
    $("#divPersonalized").attr("hidden","hidden"); 
} 

Demo

Update

Я обновил Demo.

0

Использовать видимый селектор в jquery. visible doc.

Вы можете попробовать это:

$(".Personalized").click(function(){ 


      if($('#divPersonalized').is(':visible')) { 

        $('#divPersonalized').hide(); 

      } else { 

       $.ajax({ 

         ... 
         ... 
         success: function(html){ 
          $("#divPersonalized").html(html).show(); 
         } 
         ... 
         ... 
       }); 
      } 

}); 
-1

Бросив в смесь, пример из разделения проблем (субъективные) - стоит посмотреть.

(function() { /* wrap it to protect globals - optional */ 

    /* 1) set some variables accessible to all functions, eg */ 

    var contentdiv = $("#divPersonalized"), /* cache reused static selector(s) */ 
    hasdataloaded = false; 

    /* 2) create a function to handle the data requests */ 

    function loaddata() { 

     $.ajax({ 
      type:"POST", url:"personalized.php", cache:false, 
      beforeSend: function(){ 
       $('#loading_personalized').show(); 
       $('#triangle-personalized').show(); 
      }, 
      complete: function(){ 
       $('#loading_personalized').hide(); 
      }, 
      success: function(html){ 
       hasdataloaded = true; /* updated the status */ 
       contentdiv.html(html); 
      } 
     }); 
    } 

    /* 3) A function to handle the show and hide and checki if data has loaded */ 
     function toggleDataDiv() { 
      contentdiv.toggle(); /* showhide */ 
      if(!hasdataloaded) { loadData(); } /* only want to load once */ 
     } 

    /* 4) the event handler */ 
    $(".Personalized").click(function(){ toggleDataDiv(); }); 

    /* attach more events to other elements eg */ 
    $(".someotherelement").click(function() { toggleDataDiv(); }); 


})(); 
Смежные вопросы