2014-01-13 2 views
2

Я добавлением слов из яваскрипта массива в сНу класса bank-word, который добавляет все слова к слову банка для пользователя:Найти конкретный ключ в массиве DIV/класс

for (obj in words) { 
    for (key in words[obj]) { 
     $(".wordBank_Words").append("<div class='bank-word' word='" + key + "' ><b>" + key + "</b>: " + words[obj][key] + "</li>"); 
    } 
} 

Если пользователь нажмет слово в слово банк, он добавляет, что слово в текстовое поле, и скрывает это от слова банка:

enter image description here

$(".bank-word").click(function (event) { 

    //append each newly selected word to text box 
    $('#textBox').val($('#textBox').val() + " " + $(this).attr('word')); 

    //hide word from word bank 
    $(this).hide(); 

Затем, если пользователь удаляет слово из текста Ь ox, я хочу, чтобы слово появилось в банке слова как вариант. Это та часть, с которой у меня проблемы. Я могу проверить, нет ли слова в массиве textbox с isInArray(key, array), но у меня возникли проблемы с проверкой банка слов, чтобы убедиться, что он еще не существует в банке слов, используя isInWordBank(key) (что означает, что пользователь выбрал слово раньше, таким образом скрывая это от банка слова). Теперь он должен появиться в банке слова, поскольку он был удален из текстового поля.

Мой вопрос: как я могу использовать jQuery.inArray, чтобы передать слово, которое я ищу, и массив класса div, содержащий слово. Я бы это был jQuery.inArray(word, $(".wordBank_Words")). Я думал, что могу просто использовать jQuery find() с each(), но это не позволит мне получить конкретный ключ из класса div.

for (obj in words) { 
    for (key in words[obj]) { 

    //if word doesn't exist in text box array, and doesn't exist in word bank, add it back to word bank 
    if (!isInArray(key, array) && !isInWordBank(key)) { 
     log(key + " doesn't exist in text box array or word bank"); 
      //add word back to word bank 
     } 
    } 
} 

Проверяет слово находится в массиве Text Box:

function isInArray(word, array) { 
    return array.indexOf(word) > -1; 
} 

Полагал проверить, если слово в слово банк вообще:

function isInWordBank(word) { 
//search through word bank for key 
    jQuery.inArray(word, $(".wordBank_Words")) 
} 

HTML:

<input type="text" id="textBox" value="" /> 
<br/> 
<button onclick="submitMe()" id="testButton" >Submit Response </button> 
<br/> 

<div class="wordBank_Headings">Word Bank: 
    <span class="wordBank_Words"></span> 
</div> 

ответ

1

У меня проблемы с парсингом г через ваш код, но то, что я думаю, что вы собираетесь что-то вроде этого:

$('#textBox').on('change', function(){ 

    var words = $(this).val().split(' '); 

    $('.bank-word').each(function(){ 

     if(words.indexOf($(this).attr('word')) !== -1){ 
      $(this).hide(); 
     } 

     else { 
      $(this).show(); 
     } 

    }); 

}); 

ли эту работу за то, что вы пытаетесь достичь?

+0

Святое дерьмо да ... Я потратил столько времени, пытаясь взломать это вместе, когда уже есть замечательная функция jQuery, построенная для этого. Спасибо! Можете ли вы объяснить 'if (words.indexOf ($ (this) .attr ('word'))! == -1) {'? в этом случае, что означает 'this'? Я вижу, что есть два 'этого', но каждый относится к чему-то другому – Growler

+0

Очень приветствуется @Growler! – probablyup

+0

Только что обновил мой комментарий – Growler

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