2011-06-09 17 views
5

के साथ रोकें मेरे jQuery को व्यवस्थित करने के लिए, मैं इवेंट हैंडलर के साथ विभिन्न तत्वों के लिए "पुष्टि" कक्षा बनाना चाहता हूं ताकि मैं त्वरित पुष्टिकरण बॉक्स को बंद कर सकूं ताकि उपयोगकर्ता उनकी कार्रवाई की पुष्टि कर सके।एक jQuery ईवेंट को अन्य

यदि उपयोगकर्ता पुष्टिकरण बॉक्स पर रद्द करता है, तो निम्न में से किसी भी घटना को रद्द किया जाना चाहिए, लेकिन स्थायी नहीं होना चाहिए, उदाहरण के लिए ईवेंट को ट्रिगर करना फिर से पुष्टि करना चाहिए और फिर से शुरू करना चाहिए। यदि मैं इसे काम कर सकता हूं तो मैं यह सुनिश्चित करने के लिए उपयोगकर्ता को क्लिक करने के लिए कोई संवेदनशील कार्रवाई कर सकता हूं।

उदाहरण के लिए:

$('.confirm').click(function() { 
    if(!confirm('Are you sure?')) { 
     // Stop any other click events on $(this) from happening this instance. 
    } 
}); 

$('.clicker').click(function() { 
    alert('it happened'); 
}); 

<a class="clicker confirm">Click me</a> 

वांछित उत्पादन होगा कि पुष्टि रद्द क्लिक करें घटना को रद्द होगा, लेकिन पूरी तरह से उसे निष्क्रिय नहीं।

उत्तर

5

आप jQuery से event.stopImmediatePropagation() उपयोग कर सकते हैं:

$('.confirm').click(function(event) { 
    if(!confirm('Are you sure?')) { 
     event.stopImmediatePropagation(); 

     // Stop any other click events on $(this) from happening this instance. 
    } 
}); 

$('.clicker').click(function() { 
    alert('it happened'); 
}); 

पर देखो test case on jsFiddle

+0

काम करना चाहिए धन्यवाद! यही वह है जो मैं करना चाहता था। मेरे जवाब में TWICE को गड़बड़ कर दिया, इसलिए इसके बजाय इसे हटाने का फैसला किया;) मेरे दिमाग को ताज़ा करने के लिए धन्यवाद! – mekwall

+0

मैं फॉर्म के मामले में जोड़ना चाहता हूं, event.preventDefault() को पुष्टिकरण से इनकार करने के लिए फ़ॉर्म को रोकने के लिए भी आवश्यक है। – Dunhamzzz

0
$('.confirm').click(function() {  
return confirm('Are you sure?'); 
}); 

आप भी पक्ष में event.stopPropagation() अपने क्लिक करें घटना का उपयोग furthure प्रचार को रोकने के लिए कर सकते हैं।

+1

मैंने पाया कि झूठी खोज किए जाने पर अन्य क्लिक ईवेंट नहीं रोका लौट आते हैं। – Dunhamzzz

+0

अफसोस की बात है, '.disablePropagation() 'मौजूद नहीं है। यह मेरा बुरा था, और यह '.stopPropagation()' होना चाहिए, जो या तो काम नहीं करता है। निकोला ने सही समाधान प्रस्तुत किया! – mekwall

+0

ओह !!! मेरी गलती, लेकिन '.stopPropagation()' – Vivek

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