2011-08-30 29 views
17

Được rồi, tôi có một hộp thoại jQuery có biểu mẫu trong đó và tôi đang kết thúc cố gắng tìm ra điều này ... Cho phép xem liệu tôi có thể nói ra những gì tôi đang cố gắng làm không. .jquery: nếu ul rỗng

Tôi có 3 hộp văn bản. #apInterest, #apPayment#apPrincipal theo thứ tự chính xác đó.

thuật ngữ tiếng Anh cơ bản về những gì tôi đang cố gắng để làm:

trên KeyUp trong #apInterest nếu .val nhỏ hơn 0 hoặc lớn hơn 99,99 kích hoạt một lỗi .. khác kiểm tra ul#mylist nếu có bất kỳ li, nếu không muốn nói .hide

khi đăng ký trong #apPayment nếu .val nhỏ hơn 0 kích hoạt lỗi khác kiểm tra danh sách cho li ẩn nếu không.

#apPrincipal là điều tương tự chính xác như #apPayment

những gì tôi có quyền khoảnh khắc

$('#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(); 
    } 
} 
}); 

này Mặc dù tôi cũng đã cố gắng

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

Tôi đã có một chức năng tương tự như sau cho tất cả 3 hộp văn bản nhưng không có nội dung nào tôi đã thử có vẻ hoạt động .. bất kỳ ý tưởng nào về cách hoàn thành

này
+0

thể trùng lặp của [jquery nếu div id có trẻ em] (http://stackoverflow.com/questions/1526873/jquery-if-div-id-has-children) –

Trả lời

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

này là một sai lầm phổ biến và dễ hiểu trên phần của Justin. '$ (" # mylist: not (: contains (li)) ")' sẽ không bao giờ là null; nó sẽ luôn tạo ra một đối tượng jQuery, ngay cả khi bộ chọn không khớp. Kiểm tra chiều dài của vật thể như thế này là con đường để đi. – Blazemonger

+0

điều này làm việc cho tôi, do đó, đã đăng bài của Joseph Silber – Justin

+0

bạn tốt hơn so sánh $ ('# mylist li'). Length === 0 như thế này – Ajey

3

jQuery luôn trả về một mảng các phần tử. Nếu không tìm thấy kết quả phù hợp, mảng sẽ trống. Một mảng trống trong Javascript để đánh giá đúng:

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

Bạn muốn kiểm tra độ dài của tập trở lại:

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

nó làm việc cho nó mặc dù ... tôi đã thử cả hai. – Justin

5

Tôi thích sử dụng phương pháp children() vì nó đọc độc đáo và nó hoạt động ngay cả khi bạn đã lưu trữ bộ chọn cho ul của bạn. Đây là những gì nó trông giống như:

$myList = $('#myList') 
if ($myList.children().length === 0) ... 
Các vấn đề liên quan