2010-10-01 14 views
7

मैं निम्नलिखित कोडलाइव के साथ टॉगल ईवेंट का उपयोग कैसे करें?

$(".reply").toggle 
(
    function() 
    { 
     x1(); 
    }, 
    function() 
    { 
     x2(); 
    } 
); 

मैं live उपयोग करने की आवश्यकता है, तो नए तत्व भी बाध्य किया जाएगा है। क्या ऐसा करने के लिए कुछ वाक्यविन्यास है? या मुझे ईवेंट पर toggle लागू करने की आवश्यकता होगी?

मैं jQuery 1.4.2 का उपयोग कर रहा हूं।

+1

http://stackoverflow.com/questions/2172614/using-jquery-live-with-toggle-event – Alec

+0

डुप्लिकेट प्रश्न देखें! –

उत्तर

13

बस fehay के जवाब संशोधित इतना है कि यह jQuery पर निर्भर नहीं करता toggle() दौरान डुप्लिकेट ईवेंट हैंडलर्स संलग्न नहीं

$(".reply").live('click', function() { 
    var toggled = $(this).data('toggled'); 
    $(this).data('toggled', !toggled); 
    if (!toggled) { 
     x1(); 
    } 
    else { 
     x2(); 
    } 
}); 

इसके अलावा, बस ध्यान रखें कि जितना संभव हो, क्योंकि जिस तरह से विशिष्ट होना live के लिए चयनकर्ताओं घटना प्रतिनिधिमंडल काम करता है। दस्तावेज़ पर हर बार कुछ क्लिक होने पर, jQuery को पेड़ की जांच पर चढ़ना पड़ता है यदि तत्व चयनकर्ता से मेल खाता है। इसी कारण से, .delegate() अधिक प्रदर्शनकारी है क्योंकि आप कैप्चर एरिया को सीमित कर सकते हैं।

+0

मैं इसे एनओ के रूप में ले जाऊंगा। – BrunoLM

+0

Thanx, यह निर्दोष काम करता है! – Plippie

3

लाइव jquery 1.4 में कस्टम ईवेंट का समर्थन करता है। आप कुछ इस तरह की कोशिश कर सकते:

$(function() { 
    $(".reply").live("customToggle", function() { 
     $(this).toggle(
      function() { 
       x1(); 
      }, 
      function() { 
       x2(); 
      } 
     ); 
    }); 

    $(".reply").live('click', function() { 
     $(this).trigger('customToggle'); 
    }); 
}); 

यह एक कस्टम घटना के बिना ठीक से काम करने के लिए प्रकट होता है:

$(".reply").live('click', function() { 
    $(this).toggle(
      function() { 
       x1(); 
      }, 
      function() { 
       x2(); 
      } 
     ); 
    $(this).trigger('click'); 
}); 
+0

+1 इसे करने का अच्छा तरीका :) – Sarfraz

+1

मेरे लिए एक अच्छा तरीका प्रतीत नहीं होता है। जब भी आप उस पर क्लिक करते हैं तो आप ईवेंट हैंडलर संलग्न कर रहे हैं? –

+0

हाँ, जो मेरे लिए इतना अच्छा प्रतीत नहीं होता था। आपके उत्तर के लिए +1। मुझे यह बेहतर पसंद है। मुझे लगता है कि एक साधारण लाइव क्लिक और आपका टॉगल ऐसा करने के लिए "सही" तरीका है। – fehays

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