2010-05-27 12 views
5

div को दिखाने/छिपाने के लिए Toogle का उपयोग करके, मुझे एक समस्या है कि जब मैं अपने div को anothor फ़ंक्शन से छुपाता हूं, तो मुझे सही कार्रवाई करने के लिए बटन पर दो बार क्लिक करना होगा।jQuery टॉगल() स्थिति को बदलने के लिए कैसे करें

क्या टॉगल स्विच को बदलने का कोई तरीका है जैसे मैंने बटन पर क्लिक किया?

$('#add_task').toggle(function() { 
    if ($("#new_task_status").attr("value")==0) { 
     $("#new_task").slideDown(); 
     $("#new_task_status").attr("value", "1"); 
    } 
}, function() { 
    if ($("#new_task_status").attr("value")==1) { 
     $("#new_task").slideUp(); 
     $("#new_task_status").attr("value", "0"); 
    } 
}); 


$('nav').click(function() { 
    if ($("#new_task_status").attr("value")==1) { 
     $("#new_task_status").attr("value", "0"); 
     $("#new_task").slideUp(); 
    } 
}); 

उत्तर

1

आप को बदल सकता है आपकी .toggle() तो यह कोई फर्क नहीं पड़ता, इस तरह:

$('#add_task').click(function() { 
    $("#new_task").slideToggle(function() { 
    $("#new_task_status").val($(this).is(':visible') ? 1 : 0); 
    }); 
}); 

यह एक slideToggle() बजाय करता है, तो वर्तमान स्थिति कोई फर्क नहीं पड़ता ... जब यह रपट खत्म , यदि यह दिखाया गया है (आपने इसे खोला है) तो आपको इनपुट में 1 मिलता है, अन्यथा आपको 0 मिलता है। साथ ही, इनपुट सेटिंग के लिए .val() का उपयोग करें, बहुत आसान और अधिक सार्वभौमिक (मुझे लगता है कि यह सबसे इनपुट होने के बाद से यहां एक इनपुट है)।

1

नहीं, आपको टॉगल() फ़ंक्शन के लिए अपना स्वयं का विकल्प लागू करना होगा, जो तत्व की वर्तमान स्थिति की जांच करता है।

0

मुझे toogle का उपयोग करने की कोई आवश्यकता नहीं है। Btw

$('nav').click(function() { 
    $('#add_task').click(); 
}); 

: आप बस एक क्लिक हैंडलर के साथ भी ऐसा ही कर सकते हैं:

$('#add_task').click(function() { 
    if ($("#new_task_status").attr("value")==0) { 
     $("#new_task").slideDown(); 
     $("#new_task_status").attr("value", "1"); 
    } else { 
     $("#new_task").slideUp(); 
     $("#new_task_status").attr("value", "0"); 
    } 
}); 

और उसके बाद। nav एक HTML तत्व नहीं है। आप शायद #nav (शायद सिर्फ एक टाइपो) का मतलब है।

और जैसा कि निक पहले से ही उल्लेख किया गया है, .val() का उपयोग करने पर विचार करें।

+0

एनएवी - एचटीएमएल 5 –

+0

में नए टैग BTW अपने समाधान ऊपर स्लाइड और एक चक्र में नीचे तो यह :) –

0

मैं एक घटना चालित approch, की तरह का सुझाव:

$("#add_task").bind({ 
    "toggle": function(e) { 
    $("#add_task").trigger(($("#new_task_status").attr("value")==0) ? "open" : "close");); 
}, 
"open": function(e) { 
    $("#new_task_status").attr("value", "1"); 
    $("#new_task").slideDown(); 
}, 
"close": function(e) { 
    $("#new_task_status").attr("value", "0"); 
    $("#new_task").slideUp(); 
}    
}); 

$("#nav").click(function() { 
    $("#add_task").trigger("toggle"); 
}); 
+0

लहराते है इस के समान नहीं है ओपी है, '# nav' पर क्लिक करके * तत्व * बंद हो जाता है, आपका समाधान मुझे इसे टॉगल करने का कारण बनता है। आपको इसके बजाय '.trigger (" close ") 'की आवश्यकता होगी, लेकिन यह पहले से परिभाषित कार्यों का लाभ उठाने के लिए एक बहुत ही ठोस तरीका प्रतीत होता है ... –

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