javascript - जावास्क्रिप्ट ईवेंट हैंडलिंग में, क्यों "वापसी झूठी" या "event.preventDefault()" और "ईवेंट के प्रवाह को रोकना" एक फर्क पड़ेगा?




jquery javascript-events (4)

ऐसा कहा जाता है कि जब हम एक "क्लिक ईवेंट" को संभालते हैं, तो झूठे या कॉलिंग ईवेंट लौटते हैं.पिछले डीफॉल्ट () एक फर्क पड़ता है, जिसमें

अंतर यह है कि रोकना डीफॉल्ट केवल डिफ़ॉल्ट ईवेंट क्रिया को रोकने के लिए ही रोकता है, यानी एक लिंक क्लिक पर एक पृष्ठ रीडायरेक्ट, एक फ़ॉर्म सबमिशन आदि। और वापसी के कारण झंडा भी घटना के प्रवाह को रोक देगा।

इसका मतलब यह है कि यदि क्लिक ईवेंट कई कार्यों के लिए कई बार पंजीकृत है, तो इसका उपयोग करना

$('#clickme').click(function() {  })

वापस लौटने से क्या अन्य हैंडलर्स को चलाना बंद हो जाएगा?

मैं अब मैक पर हूं और इसलिए केवल फ़ायरफ़ॉक्स और क्रोम का उपयोग कर सकते हैं, लेकिन आईई नहीं है, जो कि एक अलग इवेंट मॉडल है, और एफएफ और क्रोम पर 3 हेन्डलर्स जोड़कर इसका परीक्षण किया है, और सभी 3 हैंडलर बिना किसी रोक के चलाए गए ...। तो वास्तविक अंतर क्या है, या, क्या ऐसी कोई स्थिति है जहां "घटना प्रवाह रोकना" वांछनीय नहीं है?

इससे संबंधित है

JQuery के चेतन () का उपयोग करते हुए, यदि तत्व पर क्लिक किया जाता है तो "<a href="#" ...> </a>", फ़ंक्शन अभी भी झूठे लौटा देना चाहिए?

तथा

E.preventDefault () में क्या अंतर है; और झूठी वापसी?


उम्मीद है कि यह कोड आपको यह समझा सकता है ...

एचटीएमएल

<div>
<a href="index.html" class="a1">click me</a>
<a href="index.html" class="a2">click me</a>
</div>

jQuery

$('div').click(function(){
    alert('I am from <div>');
});

$('a.a1').click(function(){
    alert('I am from <a>');
    return false; // this will produce one alert
});

$('a.a2').click(function(e){
    alert('I am from <a>');
    e.preventDefault(); // this will produce two alerts
});​

डेमो

या

$('div').click(function(){
    alert('I am from <div>');
});

$('a').click(function(){
    alert('I am from <a>');
});

$('a.a1').click(function(){
    alert('I am from <a class="a1">');
    return false;
});

$('a.a2').click(function(e){
    alert('I am from <a class="a2">');
    e.preventDefault();
});​

डेमो 2


कभी-कभी एक ईवेंट श्रोता घटना के पक्ष प्रभावों को रद्द करना चाहता है इसमें दिलचस्पी है। एक टेक्स्ट बॉक्स की कल्पना करें, जिसे आप केवल संख्याओं की अनुमति देना चाहते हैं। चूंकि पाठ बॉक्स कुछ भी स्वीकार कर सकते हैं, इसलिए यह आवश्यक हो जाता है कि ब्राउजर को टाइप न किए गए गैर-नंबरों को अनदेखा करें। यह कुंजी घटनाओं को सुनकर और गलत कुंजी टाइप किया जाता है तो झूठी लौट कर हासिल की जाती है।


return false या e.preventDefault() अन्य संचालकों को चलने से रोक नहीं पाएगा

इसके बजाय, वे ब्राउज़र की डिफ़ॉल्ट प्रतिक्रिया को रोकेंगे, जैसे किसी लिंक पर नेविगेट करना।

JQuery में, आप अन्य हैंडलर्स को चलने से रोकने के लिए e.stopImmediatePropagation() लिख सकते हैं।


return false और रोकें preventDefault() एक घटना से जुड़े ब्राउज़र की डिफ़ॉल्ट कार्रवाई को रोकने के लिए (उदाहरण के लिए, जब यह क्लिक किया जाता है तब लिंक के बाद preventDefault() को रोकना है। तीन भिन्न परिदृश्यों में से प्रत्येक के लिए इसे हासिल करने के लिए एक अलग तकनीक है:

1. एक ईवेंट हैंडलर जो addEventListener() (गैर- IE ब्राउज़र) का उपयोग करके जोड़ा गया है । इस स्थिति में, Event ऑब्जेक्ट की preventDefault() विधि का उपयोग करें। इस घटना के लिए अन्य हैंडलर को अब भी बुलाया जाएगा।

function handleEvent(evt) {
    evt.preventDefault();
}

2. एक इवेंट हैंडलर जो attachEvent() (आईई) का उपयोग करके जोड़ा गया है । इस स्थिति में, returnValue की returnValue प्रॉपर्टी को true सेट करें। ईवेंट के लिए अन्य हैंडलर को अभी भी बुलाया जाएगा, और यह इस संपत्ति को भी बदल सकता है।

function handleEvent() {
    window.event.returnValue = false;
}

3. किसी ईवेंट या ईवेंट हैंडलर संपत्ति का इस्तेमाल करते हुए एक ईवेंट हैंडलर जोड़ा गया

<input type="button" value="Do stuff!" onclick="return handleEvent(event)">

या

button.onclick = handleEvent;

इस मामले में, return false से नौकरी मिल जाएगी। attachEvent() या attachEvent() द्वारा जोड़ा गया कोई अन्य ईवेंट हैंडलर अभी भी कहा जाएगा।

function handleEvent() {
    return false;
}




event-handling