2012-02-02 32 views
6

thể trùng lặp:
jquery .is(“:visible”) not working in ChromejQuery .là (": có thể nhìn thấy") hoạt động trong Firefox nhưng không phải Chrome

tôi đang cố gắng để có được tất cả các mục có thể nhìn thấy trong một mảng. Nó hoạt động tốt trong Firefox chứ không phải Chrome.

Dưới đây là mã của tôi:

$.each (t.config.promoInput, function (i, v) { 
    var size = 0; 

    $.each ($(v).find('option'), function (i, v) { 
     $(v).show() // Show all options in <tt>$(v)</tt>. 
      .not(':first-child') // Don't hide <tt>(All)</tt>. 
      .not(':Contains("' + t.config.searchSpanInput.val() + '")') // Don't hide options that match the searchCriteria. 
      .hide(); // Hide everthing that doesn't match or isn't (All). 

     if ($(v).is(":visible")) { 
      size++; 
     } 
    }); 
}); 

Trong gia số kích thước Firefox, trong khi kích thước Chrome vẫn bằng 0.

EDIT:: Chứa là bổ sung của riêng tôi đến thư viện jQuery. Đây là phiên bản không phân biệt dạng chữ: chứa.

+2

HTML trông như thế nào? – Pointy

+0

Lưu ý rằng bạn phải đóng cả hai khối mã 'mỗi' –

+0

Ngoài ra, tôi không chắc chắn nhưng tôi nghĩ rằng tham chiếu i và v trong các hàm lồng nhau sẽ truy cập vào các phạm vi đó trong phạm vi gốc, vì vậy không cần phải vượt qua chúng? –

Trả lời

0

Ẩn và hiển thị, (bật/tắt) tùy chọn được cũng không được hỗ trợ trình duyệt chéo (tắt/bật). Xem câu hỏi này để có một giải pháp khả thi cho vấn đề của bạn: jQuery disable SELECT options based on Radio selected (Need support for all browsers)

Khi bạn nhận được các tùy chọn được cắt bớt, sau đó bạn có thể sử dụng độ dài để lấy kích thước.

0

Tại sao bạn không chỉ đơn giản là kiểm tra sự "display" tài sản, nếu nó "none" hơn nó ẩn, nếu nó "inline" hơn là nhìn thấy được:

$.each (t.config.promoInput, function (i, v) { 
    var size = 0; 

    $.each ($(v).find('option'), function (i, va) { 
     $(va).show() // Show all options in <tt>$(v)</tt>. 
      .not(':first-child') // Don't hide <tt>(All)</tt>. 
      .not(':Contains("' + t.config.searchSpanInput.val() + '")') // Don't hide options that match the searchCriteria. 
      .hide(); // Hide everthing that doesn't match or isn't (All). 

    }); 
    //add only visible options 
    if ($(va).css("display") === "inline") { 
     size++; 
    } 
}); 

Look đây http://jsfiddle.net/gwbTm/2/ (i thử nghiệm nó với Chrome).
Tôi nghĩ rằng cài đặt khả năng hiển thị của <option> là cái gì đó tạo ra vấn đề với các trình duyệt (expecially wit IE)

+0

Điều này tạo ra các kết quả khác nhau trong Chrome và Firefox – Kloar

Các vấn đề liên quan