डिफ़ॉल्ट लिंक को कैसे रोकें jQuery के साथ व्यवहार पर क्लिक करें


88

मेरे पास एक वेब पेज पर एक लिंक है। जब कोई उपयोगकर्ता इसे क्लिक करता है, तो पृष्ठ पर एक विजेट को अद्यतन करना चाहिए। हालाँकि, मैं कुछ कर रहा हूं, क्योंकि डिफ़ॉल्ट कार्यक्षमता (एक अलग पृष्ठ पर नेविगेट) घटना से पहले होती है।

यह लिंक जैसा दिखता है:

<a href="store/cart/" class="update-cart">Update Cart</a>

यह वही है जो jQuery दिखता है:

$('.update-cart').click(function(e) { 
  e.stopPropagation(); 
  updateCartWidget(); 
});

समस्या क्या है?


जवाबों:



35
$('.update-cart').click(function(e) {
    updateCartWidget();
    e.stopPropagation();
    e.preventDefault();
});

$('.update-cart').click(function() {
    updateCartWidget();
    return false;
});

निम्न विधियाँ ठीक उसी चीज़ को प्राप्त करती हैं।


क्यों मैं फोन करने की आवश्यकता है stopPropagation()और preventDefault()?
स्मार्टकेवमैन

2
जोनाथन के जवाब को देखो, वह बताते हैं कि प्रत्येक कार्य क्या करता है। लेकिन मूल रूप से, यह सुनिश्चित करने के लिए कि आपके द्वारा अभी-अभी क्लिक किया गया हैंडल किसी और ने नहीं संभाला है।
Peeter

30

तुम्हें चाहिए e.preventDefault() डिफ़ॉल्ट कार्यक्षमता को होने से रोकना ।

या ले लो return false अपनी विधि से।

preventDefaultडिफ़ॉल्ट कार्यक्षमता को stopPropagationरोकता है और ईवेंट को कंटेनर तत्वों तक बुदबुदाहट से बचाता है।



1

यह कोड सभी ईवेंट श्रोताओं को स्ट्रिप करता है

var old_element=document.getElementsByClassName(".update-cart");    
var new_element = old_element.cloneNode(true);
old_element.parentNode.replaceChild(new_element, old_element);  
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.