2012-03-02 302 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