【发布时间】:2018-03-03 06:35:35
【问题描述】:
我有一个文本框来搜索存在于 divs 中的关键字。我期待在搜索时进行(和)一种工作,最终结果是我得到了父类名称。
例如:
input : google,facebook
output : p1
问题:当我在同一个 div 中出现 2 个相同的关键字时,整个逻辑就会失败。
代码如下:
<input type="text" id="k_search">
<div class="p1">
<div class="keyword">google is a search engne</div>
<div class="keyword">facebook is sm site</div>
<div class="keyword">orkut is no more</div>
</div>
<div class="p2">
<div class="keyword">google is a gaint</div>
<!-- everything works fine until i have 2 keywords appearing inside
same parent div like this
<div class="keyword">google has gmail</div>
// -->
</div>
这是我想出的javascript:
<script>
jQuery(document).ready(function($) {
$('#k_search').keyup(function() {
var sel = [];
var sel_text = $(this).val();
var search_arry = sel_text.split(',');
var newArray = search_arry.filter(function(v){return v!==''});
for(var i = 0;i<newArray.length;i++){
$(".keyword").each(function() {
var cmp = $(this).text().toLowerCase();
var s_written = newArray[i].toLowerCase()
if(cmp.indexOf(s_written) > -1)
{
var temp = $(this).parent().prop('className');
sel.push(temp);
}
});
}
counts = {};
new_sel = [];
if(sel.length>1){
/* Counting occurence of class names*/
jQuery.each(sel, function(key,value) {
if (!counts.hasOwnProperty(value)) {
counts[value] = 1;
} else {
counts[value]++;
}
});
jQuery.each(counts, function(key,value) {
if(value == newArray.length)
{
new_sel.push(key);
}
});
process(new_sel);
} else {
process(sel);
}
});
});
</script>
这里是小提琴:https://jsfiddle.net/3q3ajusL/7/
你能帮忙吗?
【问题讨论】:
-
为什么要在代码中间放两行文字?
标签: javascript php jquery arrays logic