2012-01-03 19 views
7

मैं, हर क्लिक एक स्लाइड कारणjQuery फ़ंक्शन में दोहराने से कैसे रोकें?

$('.button').click(function(){ 
    $("#target").slideToggle().load('http://page'); 
}); 

के रूप में एक सरल jQuery समारोह है slideToggle व्यवहार करके, लेकिन समस्या यह है कि यह url फिर भी लोड होगा है।

मैं प्रत्येक बार क्लिक करने के लिए load() फ़ंक्शन को कैसे सीमित कर सकता हूं, लेकिन प्रत्येक क्लिक पर slideToggle()। दूसरे शब्दों में, बाद के क्लिक में load() (केवल लोड, पूरे फ़ंक्शन नहीं) को रोकने के लिए कैसे?

उत्तर

8
$('.button') 
    .on('click.loadPage', function() { 
     $("#target").load('http://page'); 
     $(this).off("click.loadPage"); 
    }) 
    .on('click.slideToggle', function(){ 
     $("#target").slideToggle(); 
    }); 

और वैश्विक वार्स के बिना एक और तरीका:

$('.button') 
    .on('click', function() { 
     if (!$(this).data("loaded")) { 
      $("#target").load('http://page'); 
      $(this).data("loaded", true); 
     } 
     $("#target").slideToggle(); 
    }); 
+0

+1 मैं इस एक पसंद है। किसी भी अनावश्यक वैश्विक चर का उपयोग न करने के लिए – pimvdb

+0

+1। – jbabey

8

एक चर (वैश्विक) है जो कहता है कि यह लोड हो गया है या नहीं। उदा:

var loaded = false; 
$('.button').click(function(){ 
    if(!loaded){ 
     $('#target').load('http://page'); 
     loaded = true; 
    } 
    $("#target").slideToggle(); 
}); 

यह हर क्लिक पर होने के लिये slideToggle सकते हैं, लेकिन केवल एक बार पेज लोड करने के लिए। :)

संबंधित मुद्दे