2013-08-19 6 views
15

मैं इस कोड है:jQuery का उपयोग कर चेकबॉक्स चेक/अनचेक किए गए राज्यों पर कोई तत्व कैसे दिखाना/छुपाएं?

<fieldset class="question"> 
     <label for="coupon_question">Do you have a coupon?</label> 
     <input class="coupon_question" type="checkbox" name="coupon_question" value="1" /> 
     <span class="item-text">Yes</span> 
    </fieldset> 

    <fieldset class="answer"> 
     <label for="coupon_field">Your coupon:</label> 
     <input type="text" name="coupon_field" id="coupon_field"/> 
    </fieldset> 

और मैं दिखाने/"जवाब" fieldset को छिपाने के लिए (डिफ़ॉल्ट छिपा हुआ है) चाहते हैं fieldset में चेकबॉक्स "सवाल" पर क्लिक करने के बाद कि कैसे करना है।

<script> 
    $().ready(function(){ 

     $('.question').live('click',function() { 
       $('.answer').show(300); 
      } 
      , 
      function(){ 
       $('.answer').hide(200); 
      } 
     ); 

    }); 
</script> 

किसी ने मुझसे मदद कर सके कैसे चेकबॉक्स का उपयोग करने के लिए: मैं की तरह एक क्लासिक elemetn के लिए तकनीक का उपयोग करने के लिए सक्षम नहीं था? यदि छुपा हुआ है तो भी चेकबॉक्स को शून्य (अनचेक) करना संभव है।

+0

: कृपया ध्यान दें कि .live() को jQuery के संस्करण 1.7 के बाद से हटा दिया गया है, इसके बजाय अरुण – zamil

उत्तर

26

चेकबॉक्स को onchange घटना संलग्न करें:

<input class="coupon_question" type="checkbox" name="coupon_question" value="1" onchange="valueChanged()"/> 

<script type="text/javascript"> 
function valueChanged() 
{ 
    if($('.coupon_question').is(":checked")) 
     $(".answer").show(); 
    else 
     $(".answer").hide(); 
} 
</script> 
3

प्रयास करें

$(document).ready(function(){ 
    //Register click events to all checkboxes inside question element 
    $(document).on('click', '.question input:checkbox', function() { 
     //Find the next answer element to the question and based on the checked status call either show or hide method 
     $(this).closest('.question').next('.answer')[this.checked? 'show' : 'hide']() 
    }); 

}); 

डेमो: Fiddle

या

$(document).ready(function(){ 
    //Register click events to all checkboxes inside question element 
    $(document).on('click', '.question input:checkbox', function() { 
     //Find the next answer element to the question and based on the checked status call either show or hide method 
     var answer = $(this).closest('.question').next('.answer'); 

     if(this.checked){ 
      answer.show(300); 
     } else { 
      answer.hide(300); 
     } 
    }); 

}); 
+0

के उत्तर में दिए गए .on() का उपयोग करें आपका उदाहरण बहुत जटिल है (इस संदर्भ में कि यह बहुत कठिन है एक शुरुआत के लिए समझो; घटना हालांकि यह शायद कोड का एक कुशल टुकड़ा है), क्या आप इसे टिप्पणी कर सकते हैं। मुझे दिखाने और छिपाने के अलावा अलग-अलग चीजों को चलाने की ज़रूरत है। क्या यह एकमात्र तरीका है कि मैं क्या करना चाहता हूं? – dmn77

+0

@ dmn77 अद्यतन के बजाय jquery के साथ छिपाने के लिए अद्यतन –

1
$(document).ready(function() { 
    $(document).on("click", ".question", function(e) { 
     var checked = $(this).find("input:checkbox").is(":checked"); 
     if (checked) { 
      $('.answer').show(300); 
     } else { 
      $('.answer').hide(300); 
     } 
    }); 
}); 
26

इस

$(".answer").hide(); 
$(".coupon_question").click(function() { 
    if($(this).is(":checked")) { 
     $(".answer").show(300); 
    } else { 
     $(".answer").hide(200); 
    } 
}); 
प्रयास करें

FIDDLE

+0

+1 अद्यतन: कोई नहीं; सीएसएस में यह सही तरीका प्रतीत होता है, बस कुछ उपयोगकर्ता के पास जेएस अक्षम हो सकता है। – Diego

+0

@EswaraReddy, +1, यह अब तक का सबसे अच्छा जवाब है जिसे मैंने अब तक पाया है – lmiguelvargasf

+0

@lmiguelvargasf धन्यवाद। –

1

इस

<script> 
    $().ready(function(){ 
     $('.coupon_question').live('click',function() 
     { 
      if ($('.coupon_question').is(':checked')) { 
       $(".answer").show(); 
      } else { 
       $(".answer").hide(); 
      } 
     }); 
    }); 
</script> 
5

सरल प्रयास करें - और मैं आईडी के लिए चेकबॉक्स वर्ग के रूप में अच्छी तरह से बदल दिया है:

$(function() { 
 
    $("#coupon_question").on("click",function() { 
 
    $(".answer").toggle(this.checked); 
 
    }); 
 
});
.answer { display:none }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<fieldset class="question"> 
 
    <label for="coupon_question">Do you have a coupon?</label> 
 
    <input id="coupon_question" type="checkbox" name="coupon_question" value="1" /> 
 
    <span class="item-text">Yes</span> 
 
</fieldset> 
 

 
<fieldset class="answer"> 
 
    <label for="coupon_field">Your coupon:</label> 
 
    <input type="text" name="coupon_field" id="coupon_field" /> 
 
</fieldset>

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