2012-07-31 22 views
8

मैं इस कोड से फ़ंक्शन को कॉल करें:कैसे ajax कॉल करने के लिए केवल एक बार

<div id="header-button-news" class="header-button-info"> 
     <a href="javascript:;" title="Новости" onclick="showNews()"></a> 
     <div class="new">2</div> 
    </div> 

मेरे समारोह

function showNews() 
{   
     //other js which show block 

     jQuery("#loader").show(); 


     //ajax which load content to block 
     jQuery.ajax({ 
      type: "GET", 
      url: link, 
      dataType: "html", 
      success: function(data) { 
       jQuery('#top-info-news').html(data); 
      }, 
      complete: function(){ 
       jQuery('#loader').hide(); 
      }, 
     }); 
} 

है मैं कैसे केवल एक बार ajax कॉल कर सकते हैं? इसलिए जब सामग्री लोड हो जाती है और पृष्ठ को अजाक्स लोड न करने के लिए ताज़ा नहीं किया गया था? मैंने बुलियन वैरिएबल करने की कोशिश की लेकिन कुछ भी नहीं, मुझे लगता है कि यह इसलिए है क्योंकि मैं हर बार फ़ंक्शन कॉल करता हूं। कृपया मुझे एक विचार दें कि कैसे करना है।

धन्यवाद

उत्तर

15

जब आप उस घटना पर कुछ करना चाहते हैं।

पहचानें कि आपने पहले से ही अपना डेटा लोड कर लिया है।

var loaded = false; 

function showNews() { 
    //other js which show block 

    jQuery("#loader").show(); 


    if(loaded) return; 

    //ajax which load content to block 
    jQuery.ajax({ 
     type: "GET", 
     url: link, 
     dataType: "html", 
     success: function(data) { 
      jQuery('#top-info-news').html(data); 
     }, 
     complete: function(){ 
      jQuery('#loader').hide(); 
     }, 
    }); 

    loaded = true; 
} 

या one. का उपयोग जब आप इसे एक बार कॉल करना चाहते हैं।

<a href="javascript:;" title="Новости" onclick="showNews()" class="showNews"></a> 

jQuery('.showNews').one('click', function() { 
    // your code 
}); 

"Attach a handler to an event for the elements. The handler is executed at most once per element."

reference

11

उपयोग .one() समारोह:

तत्वों के लिए एक घटना के लिए कोई हैंडलर देते हैं। हैंडलर प्रति तत्व एक बार में निष्पादित किया जाता है।

<a href="#" title="Новости" id="shownews"></a> 

मैं एक आसान बाँध अनुमति देने के लिए लंगर के लिए एक id विशेषता जोड़ लिया है, लेकिन आप इस्तेमाल कर सकते हैं $("#header-button-news a").one

$(document).ready(function() { 
    $('#shownews').one('click', function (evt) { 

    evt.preventDefault(); // prevent default click action 

    jQuery("#loader").show(); 
    //ajax which load content to block 
    jQuery.ajax({ 
     type: "GET", 
     url: link, 
     dataType: "html", 
     success: function (data) { 
     jQuery('#top-info-news').html(data); 
     }, 
     complete: function() { 
     jQuery('#loader').hide(); 
     }, 
    }); 
    }); 
}); 

इसके अलावा event.preventDefault() इस्तेमाल किया पीछा किया जा रहा से लंगर पर डिफ़ॉल्ट गतिविधि को रोकता

1
<div id="header-button-news" class="header-button-info"> 
    <a id="a_news" title="Новости"></a> 
    <div class="new">2</div> 
</div> 

जे एस में:

$(function(){ 
    $('a#a_news').one('click',showNews); 
}) 
संबंधित मुद्दे