2012-03-02 4 views
-1

Мне просто интересно, как использовать функцию: не в моей ситуации.jquery if else statements

Это jquery. Я пытаюсь выбрать элементы в списке, которые не указаны в условии if.

Объект Json получил: [«синий», «телепорт», «любовь», «трансформаторы», «blink182», «високосный год», «база данных», «валентинки», «медвежий», «жалящий», «a1», «телеграф», «Трион», «спа», «собственность», «джоли», «благодать», «Санта-Клаус»]

Я просто хочу, чтобы получить слова без специальных символов

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

+0

«: not» - это фильтр селектора и не имеет ничего общего со строками. Трудно понять, что вы пытаетесь разобрать. Небольшая часть json – charlietfl

+0

отредактирована. Извините, что раньше не было ясно. –

ответ

1

Ответ json - это не читаемая человеком строка, как вы ее приближаете. Это массив, который вам нужно перебрать для разбора валиков.

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

}, 
+0

Wow thanks charlietf! теперь я знаю, как это работает для цикла. –

1

:not представляет собой фильтр, он используется для фильтрации элементов из выбора, например:

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

Это выберет все input элементы на странице, за исключением тех, с атрибутом типа равно submit

рекомендуется использовать метод not() для удобства чтения вместо :not фильтра

Что вы пытаетесь сделать и что не работает?

Так что, глядя на ваши обновления, вы не можете использовать слово «или» в условном выражении if, используйте double-pipe || вместо этого, например,

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

отредактировал мой вопрос выше. Пытается использовать цикл if else в самом jquery. –

+0

: на самом деле это не селектор, а не фильтр, поскольку он выбирает элементы, а не фильтрует их. –

+0

Итак, он выбирает вещи, не выбирая их? ;) – danwellman

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

почему-то для циклов всегда делает мой код не работоспособным. Любые идеи почему? –

+0

не нужно использовать JSON.parse в ответе ajax jQuery, будет обрабатываться ядром – charlietfl