在div / class数组中查找特定键

时间:2014-01-13 03:51:47

标签: javascript jquery

我将javascript数组中的单词附加到div类bank-word,后者将所有单词添加到用户的单词库中:

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();

然后,如果用户从文本框中删除该单词,我希望该单词作为选项重新出现在单词bank中。这是我遇到麻烦的部分。我可以使用isInArray(key, array)检查文本框数组中是否不再存在这个词,但是在使用isInWordBank(key)检查单词bank以查看它还不存在于单词库中时遇到问题(意思是,用户之前选择了单词,因此将其隐藏在单词库中)。现在它需要重新出现在单词库中,因为它已从文本框中删除。

我的问题是,如何使用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
        }
    } 
}

检查单词是否在文本框数组中:

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

假设检查单词是否在单词bank中:

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 个答案:

答案 0 :(得分: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();
       }

    });

});

这对你想要完成的事情有用吗?