2012-03-02 369 views
-1

我只是想知道如何使用函數:不在我的情況。jquery if else語句

這是jQuery。我試圖選擇列表中不在if循環中提及的條件中的元素。收到Json對象:[「blue」,「teleport」,「love」,「變形金剛」,「blink182」,「閏年」,「數據庫」,「valentines」,「看跌」,「sting」 「A1」,「每日電訊報」,「TRION」,「溫泉」,「屬性」,「朱莉」,「寬限期」,「聖誕老人」]

我只是想收到的話沒有特殊字符

function refreshKeywords(e) { 
    e.preventDefault(); 
    var refresh_form = jQuery(e.target); 
    alert("HELLO"); 
    $.ajax({ 
     url: refresh_form.attr('action'), 
     type: refresh_form.attr('method'), 
     data: refresh_form.serialize(), 
     dataType: 'json', 
     success: function(response) { 
      var list = response.new_list; 
      if (list != "[" 
      or list != "]" 
      or list != "{" 
      or list != "}" 
      $('#keywords').append("<li>" + list + "</li>"); 
      }, 
     }); 
    }​ 

如果有人知道如何將:not函數輸入到我的代碼中,將不勝感激。非常感謝。

+0

你有什麼是無效的JavaScript。你在用什麼':not'「函數? – Dennis 2012-03-02 14:13:07

+0

「:not」是一個選擇器過濾器,與字符串無關。很難弄清楚你試圖解析什麼。發佈一些json – charlietfl 2012-03-02 14:13:34

+0

編輯。對不起,以前不清楚。 – 2012-03-02 14:19:08

回答

1

json響應不是人類可讀的字符串,你正在接近它。這是一個數組,你需要循環解析vales

success: function(response) { 
    var html=''; 
    $.each(response, function(i, item){ 
     html+= "<li>" + item + "</li>"; 
    }); 
    $('#keywords').append(html) 

}, 
+0

處理哇謝謝charlietf!現在我知道如何循環工作。 – 2012-03-02 14:38:14

1

:not是一個過濾器,它用於過濾元件出的選擇,例如:

$("input:not([type='submit'])") 

這將選擇頁面上的所有input元件,除了那些與類型屬性等於submit

建議使用not()方法代替:not過濾器

它是什麼,你想做什麼,不工作?

因此,看看你的更新,你不能在if條件中使用單詞'或',使用雙管道||相反,例如

if (list != "[" || list != "]" || list != "{" || list != "}") { 
    $('#keywords').append("<li>" + list + "</li>"); 
} 

除此之外,你可能想使用& &代替的,因爲你不希望任何這些字符:

if (list != "[" && list != "]" && list != "{" && list != "}") { 
     $('#keywords').append("<li>" + list + "</li>"); 
    } 

但是...你可能想要做它用不同的方式在任何情況下,您可能都不想直接使用JSON字符串,而是要將其解析爲實際的JavaScript對象,以便您可以更輕鬆地使用它,例如

var array = $.parseJSON(response.new_list); 
+0

編輯我的問題上面。試圖在jquery中使用if else循環。 – 2012-03-02 14:17:11

+0

:實際上不是選擇器,而不是過濾器,因爲它選擇元素而不是過濾它們。 – 2012-03-02 14:18:12

+0

所以它選擇的東西,而不是選擇它們? ;) – danwellman 2012-03-02 14:29:19

0

你想要的是一個JSON parser。解析然後遍歷結果數組。

//Cache #keywords outside the loop to make it faster. 
var array = JSON.parse(response.new_list), keywords = $("#keywords"); 
for(var i = 0, len = array.length; i<len; i++) { 
    keywords.append("<li>" + array[i] + "</li>"); 
} 
+0

由於某些原因,循環總是使我的代碼無法運行。任何想法爲什麼? – 2012-03-02 14:32:18

+0

無需在jQuery ajax響應中使用JSON.parse,將由核心 – charlietfl 2012-03-02 14:40:59