2010-10-06 48 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

相关问题