Jquery mobile 如何在jquery mobile filterable中筛选特定字段

Jquery mobile 如何在jquery mobile filterable中筛选特定字段,jquery-mobile,Jquery Mobile,我想用jquery mobile和phonegap创建字典应用程序。但我在filterable小部件中过滤某些单词时遇到了问题 例如代码,我在filterable listview中使用了代码示例: <form> <input data-type="search" id="divOfPs-input"> </form> <div class="elements" data-filter="true" data-input="#divOfPs-inp

我想用jquery mobile和phonegap创建字典应用程序。但我在filterable小部件中过滤某些单词时遇到了问题

例如代码,我在filterable listview中使用了代码示例:

<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>

这些Lorem ipsum door sit amet,consetetur sadipscing eliter,sed diam

标签非常见的临时性劳动和医疗保险

标签erat,sed diam voluptua。在vero eos和accusam和justo duo dolores

等。斯特特·克里塔·卡斯德·古伯格伦(Stet clita kasd gubergren),东部无海塔基马塔圣所

可过滤Lorem ipsum dolor sit amet。科塞特图,洛雷姆·伊普苏姆·多洛·希特·阿梅特


我的目的只是过滤“强”标签中的单词,而不是所有的单词…如何做到这一点?感谢您的回答。

您可以使用filterable小部件的选项执行此操作。基本上,覆盖默认过滤器以将搜索文本与
文本进行比较:

$(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;
}
$(document).on(“pagecreate”,“#page1”,function(){
$(“.elements”).filterable('option','filterCallback',StrongSearch);
});
功能strong搜索(idx、searchValue){
var-ret=false;
如果(searchValue&&searchValue.length>0){
var filtertext=$(this).data(“filtertext”)| |“”;
filttext=filttext.toLowerCase();
var text=$(this.find(“strong”).text().toLowerCase();
if(text.indexOf(searchValue.toLowerCase())<0&&filtext.indexOf(searchValue.toLowerCase())<0){
ret=true;//过滤掉这个
}
} 
返回ret;
}
在页面创建中,将filterable设置为使用filterCallback(在我的示例中为strong搜索)。回调传递项的索引和键入的搜索文本。回调的
this
上下文就是要检查的元素(示例中的
dom元素)

var text=$(this.find(“strong”).text().toLowerCase()查找强元素中的文本,同时filttext检查是否使用了数据filtertext属性。最后,使用indexOf()javascript函数查看搜索值是否包含在强文本或数据过滤器文本属性中

工作

有关另一个示例和更多详细信息,请参阅此博客文章,其中演示了如何将默认筛选从包含搜索文本更改为以搜索文本开头(完全公开,我编写了此文章):


哇,做得很好…谢谢你的快速回答ezanker..我很感激我很抱歉ezanker,我仍然有问题,我尝试了你的代码,但在实际的过滤词中使用它时遇到了问题,例如我过滤了单词:“工作”,但有返回:书籍、胸墙、砌砖等。不是确切的单词:工作,如何做到这一点?哦,再次抱歉..我刚刚读了你的博客..答案是使用!=0不小于0。。thanks@GAJIkoegajikoe,博客正在做一些不同的事情(从开始而不是包含)。你现在可以用了吗?@GAJIkoegajikoe,太好了!请考虑接受答案,以便未来的搜索者知道问题得到了解答。