2011-08-30 12 views
17

ठीक है मेरे पास एक jQuery संवाद बॉक्स है जिसमें इसका एक रूप है और मैं इसे समझने की कोशिश कर रहा हूं ... मैं देखता हूं कि मैं क्या करने की कोशिश कर रहा हूं।jquery: अगर उल खाली है

मेरे पास 3 टेक्स्ट बॉक्स हैं। उस सटीक क्रम में #apInterest, #apPayment और #apPrincipal

मुझे क्या करना कोशिश कर रहा हूँ के बुनियादी अंग्रेज़ी शर्तें:

में #apInterest अगर .val 0 से कम या 99.99 ट्रिगर एक त्रुटि से अधिक है KeyUp पर

.. किसी और जाँच ul#mylist अगर यह किसी भी li है, अगर नहीं .hide

#apPayment में कीप पर .val 0 से कम एक त्रुटि ट्रिगर है li के लिए सूची को चेक करें यदि नहीं तो छुपाएं।

#apPrincipal एक ही बात है वास्तव में #apPayment

मैं क्या सही इस पल

$('#apInterest').live("keyup", function(e) { 
var parent = $('.inter').parents("ul:first"); 
if ($('#apInterest').val() < 0 || $('#apInterest').val() > 99.99) { 
    $('.inter').remove(); 
    $('#mylist').append('<li class="inter">Interest Rate cannot be below 0 or above 99.99</li>'); 
    $('#popuperrors').show(); 
    $(this).addClass('error'); 
} else { 
    $(this).removeClass('error'); 
    $('.inter').remove(); 
    alert(parent.children().text); 
    if (parent.children().length == 0){ 
     $('#popuperrors').hide(); 
    } 
} 
}); 

है हालांकि मैं भी कोशिश की है

if ($("#mylist :not(:contains(li))")){ 
$('#popuperrors').hide(); 
} 

मैं एक समारोह सभी के लिए इस के समान था के रूप में 3 टेक्स्टबॉक्स लेकिन मैंने जो कुछ भी कोशिश की है वह काम नहीं कर रहा है .. इस

को पूरा करने के तरीके पर कोई विचार
+0

संभव डुप्लिकेट [jQuery अगर div id बच्चे हैं] (http://stackoverflow.com/questions/1526873/jquery-if-div-id-has-children) –

उत्तर

49
if ($('#mylist li').length == 0) ... 
+5

यह जस्टिन के हिस्से पर एक आम और आसानी से समझने वाली गलती है। '$ (" # मेरी सूची: नहीं (: शामिल है (ली)) ") 'कभी शून्य नहीं होगा; यह हमेशा एक jQuery ऑब्जेक्ट का उत्पादन करेगा, भले ही चयनकर्ता कुछ भी मेल नहीं खाता। इस तरह की वस्तु की लंबाई का परीक्षण करना रास्ता है। – Blazemonger

+0

यह मेरे लिए काम करता था, इसलिए यूसुफ सिल्बर – Justin

+0

द्वारा पोस्ट किया गया था, आप $ ('# mylist li') की तुलना करने से बेहतर हैं। लंबाई === 0 इस – Ajey

3

jQuery हमेशा तत्वों की एक सरणी देता है। यदि कोई मिलान नहीं मिला, तो सरणी खाली हो जाएगी। जावास्क्रिप्ट में एक खाली सरणी सही का आकलन:

console.log(!![]); // logs: true 

आप लौटे सेट की लंबाई जाँच करना चाहते हैं:

if (! $("#mylist li").length){ 
    $('#popuperrors').hide(); 
} 
+0

की तरह यह इसके लिए काम करता है हालांकि ... मैंने दोनों को आजमाया। – Justin

5

मैं children() विधि का उपयोग कर, क्योंकि यह अच्छी तरह से पढ़ता है और उसे अगर आप भी काम करता है पहले से ही आपके उल के लिए चयनकर्ता कैश किया है। यहाँ यह क्या लगता है जैसे:

$myList = $('#myList') 
if ($myList.children().length === 0) ... 
की
संबंधित मुद्दे