घटना चेकबॉक्स क्लिक पर बुदबुदाती को रोकने के लिए कैसे

वोट
149

मैं एक चेकबॉक्स है कि मैं क्लिक करें घटना पर कुछ अजाक्स काम करवाना चाहते हैं, तथापि चेकबॉक्स अपने आप क्लिक बर्ताव है कि मैं जब चेकबॉक्स क्लिक किया जाता है चलाने के लिए नहीं करना चाहते हैं के साथ एक कंटेनर के अंदर भी है। यह नमूना दिखाता है कि मैं क्या करना चाहते हैं:

<html lang=en>
    <head>
        <title>Test</title>
        <script type=text/javascript src=http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js></script>
        <script type=text/javascript>
        $(document).ready(function() {
            $('#container').addClass('hidden');
            $('#header').click(function() {
                if($('#container').hasClass('hidden')) {
                    $('#container').removeClass('hidden');
                } else {
                    $('#container').addClass('hidden');
                }
            });
            $('#header input[type=checkbox]').click(function(event) {
                // Do something
            });
        });
        </script>
        <style type=text/css>
        #container.hidden #body {
            display:none;
        }
        </style>
    </head>
    <body>
        <div id=container>
            <div id=header>
                <h1>Title</h1>
                <input type=checkbox name=test />
            </div>
            <div id=body>
                <p>Some content</p>
            </div>
        </div>
    </body>
</html>

हालांकि, मैं समझ नहीं कैसे घटना (चेक बॉक्स बनने जाँच / अनियंत्रित) डिफ़ॉल्ट क्लिक बर्ताव को पैदा करने के बिना बुदबुदाती नहीं चलाने के लिए बंद करने के लिए।

निम्न में से दोनों बुदबुदाती घटना को रोकने लेकिन यह भी चेकबॉक्स राज्य में परिवर्तन नहीं करते:

event.preventDefault();
return false;
22/07/2009 को 10:55
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


8 जवाब

वोट
30

stopPropagation विधि का उपयोग करें:

event.stopPropagation();
22/07/2009 को 11:06
का स्रोत उपयोगकर्ता

वोट
272

बदलने के

event.preventDefault();
return false;

साथ में

event.stopPropagation();

event.stopPropagation ()

माता-पिता तत्वों के लिए एक घटना का उत्साह से भरा हुआ बंद हो जाता है, घटना के बारे में सूचित किया जा रहा से किसी भी माता-पिता के संचालकों को रोकने।

event.preventDefault ()

डिफ़ॉल्ट क्रिया को क्रियान्वित करने से ब्राउज़र को रोकता है। विधि जानने के लिए कि इस विधि कभी (है कि घटना वस्तु पर) कहा जाता था isDefaultPrevented का प्रयोग करें।

22/07/2009 को 11:06
का स्रोत उपयोगकर्ता

वोट
5

दूसरों के रूप में उल्लेख किया है, की कोशिश stopPropagation()

और वहाँ की कोशिश करने के लिए दूसरी हैंडलर है: event.cancelBubble = true;यह एक आईई विशिष्ट हैंडलर है, लेकिन यह कम से कम एफएफ में समर्थित है। वास्तव में, इसके बारे में ज्यादा पता नहीं के रूप में मैं इसे अपने आप उपयोग नहीं किया है, लेकिन अगर सब कुछ विफल हो यह एक शॉट के लायक हो सकता है।

22/07/2009 को 11:12
का स्रोत उपयोगकर्ता

वोट
25

मत भूलना आईई:

if (event.stopPropagation) {    // standard
        event.stopPropagation();
    } else {    // IE6-8
        event.cancelBubble = true;
}
16/12/2012 को 10:50
का स्रोत उपयोगकर्ता

वोट
4

इस घटना बुदबुदाती अवधारणा को समझने के लिए एक उत्कृष्ट उदाहरण है। इसके बाद के संस्करण जवाब के आधार पर, अंतिम कोड के रूप में नीचे वर्णित की तरह दिखाई देगा। कहाँ उपयोगकर्ता अपनी मूल तत्व 'शीर्षक के लिए चेकबॉक्स पर घटना प्रसार हुए क्लिक का उपयोग बंद कर दिया जाएगा event.stopPropagation();

$(document).ready(function() {
            $('#container').addClass('hidden');
            $('#header').click(function() {
                if($('#container').hasClass('hidden')) {
                    $('#container').removeClass('hidden');
                } else {
                    $('#container').addClass('hidden');
                }
            });
          $('#header input[type=checkbox]').click(function(event) {
              if (event.stopPropagation) {    // standard
                   event.stopPropagation();
               } else {    // IE6-8
                    event.cancelBubble = true;
               }
          });     
  });
27/07/2015 को 10:13
का स्रोत उपयोगकर्ता

वोट
5

jQuery का उपयोग करते समय आप कॉल पर रोक समारोह को अलग की जरूरत नहीं है ..

तुम सिर्फ कर सकते हैं return falseईवेंट हैंडलर में

इस घटना को रोकने के लिए और उत्साह से भरा हुआ रद्द हो जाएगा ..

और देखें:

event.preventDefault () बनाम रिटर्न फाल्स

jQuery डॉक्स से:

इन संचालकों, इसलिए, event.stopPropagation () कॉल या गलत वापस लौट कर आरंभ होने से प्रत्यायोजित हैंडलर रोक सकता है।

17/08/2015 को 10:36
का स्रोत उपयोगकर्ता

वोट
0

क्रेडिट करने के लिए @mehras कोड के लिए। मैं सिर्फ यह प्रदर्शित करने के लिए एक टुकड़ा क्योंकि मैंने सोचा कि सराहना की होगी और मैं एक बहाना है कि सुविधा की कोशिश करना चाहता था बनाया।

$(document).ready(function() {
            $('#container').addClass('hidden');
            $('#header').click(function() {
                if($('#container').hasClass('hidden')) {
                    $('#container').removeClass('hidden');
                } else {
                    $('#container').addClass('hidden');
                }
            });
          $('#header input[type=checkbox]').click(function(event) {
              if (event.stopPropagation) {    // standard
                   event.stopPropagation();
               } else {    // IE6-8
                    event.cancelBubble = true;
               }
          });     
  });
div {
  text-align: center;
  padding: 2em;
  font-size:1.2em
}
.hidden {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="header"><input type="checkbox"/>Checkbox won't bubble the event,
 but this text will.</div>
<div id="container">click() bubbled up!</div>

19/04/2017 को 20:39
का स्रोत उपयोगकर्ता

वोट
-1

AngularJS में यह काम करता है चाहिए:

event.preventDefault(); 
event.stopPropagation();
22/05/2017 को 09:08
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more