2012-06-25 47 views
1

迄今爲止的故事....JQuery的 - 精梳選擇器包括:包含

你好Stackoverflowers,我又來了!正確的,即時在學習JQuery,我想建立一個「搜索當你鍵入」 AJAX/JSON控制。所以關閉了JSFiddle來構建一個框架函數並在它上面構建,隨着我學習。你已經幫我在過去的幾天裏,多謝你:

JQuery - Using Selector :contains - Weird Results

JQuery - Iterating JSON Response

現在即時通訊移動到只顯示匹配輸入所選擇的列表項。

「所以你現在的問題是什麼..」我在這裏你呻吟! (和是rlemon我現在有我的電子書!):)

JQuery nOOb問題第3部分:多選擇器。

的Ive使用JQuery Multiple Selectors API導讓我明白如何將多個選擇,但我的問題是,我的不選擇什麼,即:包含沒有找到任何東西。難道這不正確,香港專業教育學院使用的JSLint,它已沒有任何錯誤正確解析:

$("li[id^='live'] li:contains('" + this.value + "')").show(); 

我完全的jsfiddle代碼是在這裏,但我已經包括它便於還有:

http://jsfiddle.net/garfbradaz/JYdTU/88/

$(document).ready(function() { 
var $input = $("#livesearchinput"), 
    filled = false; 
$.ajaxSetup({ 
    cache: false 
}); 
$input.keyup(function(key) { 
    if (!filled) { 
     filled = true; 
     $.getJSON("/gh/get/response.json//garfbradaz/MvcLiveSearch/tree/master/JSFiddleAjaxReponses/", function(JSONData) { 
      var $ul = 
      $('<ul>').attr({ 
       id: "live-list" 
      }).appendTo('div#livesearchesults'); 
      $.each(JSONData, function(i, item) { 
       $.each(item, function(j, val) { 
        $('<li>').attr({ 
         id: "live-" + val 
        }).append(val).appendTo($ul).hide(); 
       }); 
      }); 
     }); 
    } 

    var n = 0; 

    if (this.value !== "") { 
     n = $("li:contains('" + this.value + "')").length; 
     n2 = $("li[id^='live'] li:contains('" + this.value + "')").length; 
     console.log("1. value of n2 equals " + n2 + " : " + this.value + "end"); 


    } 
    else { 
     n = 0; 
    } 

    if (n <= 0) { 
     $('li[id ^= "live"]').hide("slow"); 
     console.log("1. value of n equals " + n + " : " + this.value + "end"); 
    } 

    if (n > 0) { 
     $("li[id^='live'] li:contains('" + this.value + "')").show(); 
     console.log("2. value of n equals " + n + " : " + this.value + "end"); 
    } 


}); 

});

我做了什麼就放了一個console.log n2總是0,這裏是f12的日誌證明:

proof

所以我的問題是:

  1. 我怎樣才能糾正多重選擇器包括:包含,所以我知道未來
  2. 應我甚至使用:包含,或者我應該採取不同的方式並使用.filter()?發帖前我研究這個問題,並找到了一個不錯的堆棧答案詳細介紹了使用這樣的:

JQuery Contains Selector - Multiple Text Items

回答

1

你的情況,你只需要兩個選擇結合起來:li id starts withli contains。每個選擇器的類似部分是li,所以從li開始並添加另外兩個。

$("li[id^='live']:contains('" + this.value + "')").length; 

http://jsfiddle.net/JYdTU/89/

我只更新一行以便正確控制檯輸出,你必須要經過小提琴和更新休息。

+0

真棒凱文,謝謝。 – garfbradaz