2010-10-06 51 views
1

我寫了一個搜索過濾器。它根據輸入字段中輸入的文本顯示/隱藏視頻庫中的一些縮略圖。輸入字段有一個keyUp事件。:contains()在Opera,IE(7,8)和Chrome中運行良好,但是在Firefox中

$('.videoSearch').keyup(function(e){ 
    var searchString = $(e.srcElement).val(); 
    var el = $($(e.srcElement).parents().find('.videoThumbs').first()); 
    $(el).find(".title:not(:contains('"+searchString+"'))").each(function(i,e){ 
    $(e).parent().parent().parent().parent().parent().parent().fadeOut(300); 
    }); 
    $(el).find(".title:contains('"+searchString+"')").each(function(i,e){ 
    $(e).parent().parent().parent().parent().parent().parent().fadeIn(300); 
    }); 
}); 

它在Opera,IE(7,8)和Chrome,但在Firefox中的作品很好。 keyUp事件按預期觸發(同樣在firefox中),但沒有任何拇指被隱藏。 Firebug在控制檯中記錄沒有錯誤。

任何幫助將提前 理解 感謝\葉普

+0

什麼版本的FireFox? – Incognito 2010-10-06 13:29:39

回答

0

作爲一種變通方法,您可以使用filter功能和代碼手動標準:

$(".title").filter(function() { return $(this).html().indexOf(searchString) < 0; }) 
    .each (...); 

如果任何瀏覽器下正常工作。

+0

Xion!這確實是一個更靈活的過濾例程,我現在正在腳本中使用它。但是,我發現錯誤的來源是其他地方。顯然,Firefox不支持事件對象的(e.srcElement)部分。只要我用它替換它就行了。其實我發佈的腳本也是用firefox編寫的,如果你用這個替換e.srcElement。我不確定在這裏做什麼,因爲你的回答並沒有解決我的問題,但是(在我的看法中)有一個更好的方法來做過濾,所以我會接受你的答案。謝啦。 – 2010-10-08 09:29:11

+0

爲了更加準確,您需要用$(this)替換$(e.srcElement)。現在大家應該知道我在說什麼:) – 2010-10-08 09:33:19

+0

謝謝:) IIRC e.srcElement應該是e.target。但是,既然你使用jQuery,最好用$(this)。 – Xion 2010-10-08 12:04:23

相關問題