2017-02-22 9 views
2

Я ищу, чтобы добавить элементы условно к контейнеру на основании того, соответствуют ли данные тегов ключевой переменной.Условно добавьте элементы из разобранного JSON, которые соответствуют значению

Возвращение данных тегов подобно tag1 tag2 tag3 tag4 tag5, ключ соответствует некоторым данным тегов, но он все еще не выполняет условное добавление.

Любая помощь с этой головной болью будет принята с благодарностью!

Вот код:

var key = getParameterByName('img'); 

var tags = item.tags; 

     if (key != null){ 
      //move onto conditional append 

      if (key === tags) { 

     $('<div class="photo"> 
      <figure class="cell" data="'+tags+'"> 
      <figcaption class="caption" style="display: none;"> '+title+' <a href="">click</a></figcaption> 
      <a href="' +imgb+ '"><img src="' +img+ '" class="small-image"/></a></figure>').appendTo('#container'); 
      } 
     } 
     else { 
     $('<div class="photo"><figure class="cell" data="'+tags+'"><figcaption class="caption" style="display: none;">'+title+'<a href="">click</a></figcaption><a href="'+imgb+'"><img src="'+img+'" class="small-image"/></a></figure>').appendTo('#container'); 
     } 
+0

Что такое «ключ» ?. – mehulmpt

+0

ключ - это переменная, которая запускается при загрузке страницы. var key = getParameterByName ('img'); –

+0

'ключ соответствует некоторым из тегов' означает ли это, если теги являются тегами tag2 tag2? Тогда ключ может быть 'tag1 tag2'? – mehulmpt

ответ

3

Try (tags.includes (ключ)) вместо (брелков ===). Вы проверяете, включена ли строка в большую строку, а не если «tag1 tag2 tag3» в точности соответствует «tag1».

3

Вы пропускаете цикл через массив тегов, а затем сравнивая внутри цикла, чтобы увидеть, если тег соответствует вашему key. Кроме того, html, который вы строите динамически внутри $('--html here--'), недействителен HTML (у вас есть открытые элементы).

(function($){$(function(){ 
 
    var key = 'tag2'; 
 
    var tags = ['tag1', 'tag2', 'tag3']; 
 

 
    if (key != null){ 
 
    //move onto conditional append 
 
    tags.map(function(tag, k){ 
 
     if (key === tag) { 
 
     $('<div class="photo">The tag value is ' + tag + '</div>').appendTo('#container'); 
 
     } 
 
    }); 
 
    } 
 
    else { 
 
    $('<div class="photo">The tag key is null</div>').appendTo('#container'); 
 
    } 
 

 
})})(jQuery)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="container"> 
 
</div>

Ohhhhh! Повторяя ваш вопрос, кажется, что tags - это строка, а не массив. Если это так, то см. Ниже.

(function($){$(function(){ 
 
    var key = 'tag3'; 
 
    var tags = 'tag1 tag2 tag3'; 
 

 
    if (key != null){ 
 
    //move onto conditional append 
 
    if (tags.includes(key)) { 
 
     $('<div class="photo">The tag value is ' + key + '</div>').appendTo('#container'); 
 
    } 
 
    else { 
 
     $('<div class="photo">The tag value is ' + key + ' but is not in the list of tags</div>').appendTo('#container'); 
 
    } 
 
    } 
 
    else { 
 
    $('<div class="photo">The tag key is null</div>').appendTo('#container'); 
 
    } 
 

 
})})(jQuery)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="container"> 
 
</div>

Смежные вопросы