2014-11-14 37 views
0

我想创建带有jQuery手机和手机的字典应用程序。但我有一个问题,在过滤部件如何过滤jQuery手机过滤某些字段

过滤某些词汇,例如代码,我使用了过滤列表视图代码示例:

<form> 
<input data-type="search" id="divOfPs-input"> 
</form> 
    <div class="elements" data-filter="true" data-input="#divOfPs-input"> 
    <p><strong>These</strong> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed   diam</p> 
    <p><strong>tags</strong> nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam</p> 
    <p><strong>Tags</strong> erat, sed diam voluptua. At vero eos et accusam et justo duo dolores </p> 
    <p><strong>are</strong> et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est</p> 
    <p><strong>Filterable</strong> Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur</p> 
</div> 

我的目的是“强”的标签,不是所有的话只能过滤词...怎么做?谢谢你的回答..

回答

0

你可以使用可过滤小部件的filterCallback选项。基本上,覆盖默认过滤器来搜索文本比较反对<strong>文本:

$(document).on("pagecreate", "#page1", function(){  
    $(".elements").filterable('option', 'filterCallback', StrongSearch); 
}); 


function StrongSearch(idx, searchValue) { 
    var ret = false; 
    if (searchValue && searchValue.length > 0){ 
     var filttext = $(this).data("filtertext") || ''; 
     filttext = filttext.toLowerCase(); 
     var text = $(this).find("strong").text().toLowerCase();   
     if(text.indexOf(searchValue.toLowerCase()) < 0 && filttext.indexOf(searchValue.toLowerCase()) < 0){ 
      ret = true; //filter this one out 
     } 
    } 
    return ret; 
} 

在页面上创建,设置了过滤(在我的例子StrongSearch)使用filterCallback。该回调传递该项目的索引并在搜索文本中输入。回调的this上下文是被检查的元素(示例中为<p> dom元素)。

var text = $(this).find("strong").text().toLowerCase();在strong元素中查找文本,而filttext检查是否使用了data-filtertext属性。最后使用indexOf()javascript函数来查看搜索值是包含在强文本还是包含在data-filtertext属性中。

工作DEMO

另一个例子,更详细信息,请参阅本博客文章,演示了如何更改缺省过滤从包含搜索文本与搜索文本开始(全面披露,我写的条目):

http://jqmtricks.wordpress.com/2014/07/30/starts-with-instead-of-contains-filter-text/

+0

哇做到了完美...感谢快速回答ezanker ..我明白, – 2014-11-14 16:29:14

+0

@GAJIkoegajikoe,不客气。 – ezanker 2014-11-14 16:30:38

+0

对不起ezanker,我仍然有问题,我已经尝试了你的代码,但是在使用它的时候出现了一个问题,比如我过滤了单词:“工作”但是有回报: bookwork breastworks brickwork 等 不是确切的词:工作,如何做到这一点? – 2014-11-16 07:06:07