2

对不起这个可怕的标题,我对这些东西的措辞很糟糕。

我想我想做的很简单。

我有一组组成单词的隐藏字母。

在它们下面是一些随机的乱七八糟的字母。

当人们单击其中一个随机混乱的字母时,我正在过滤隐藏的字母并显示相应的字母。

我需要做的是,如果有人点击一个字母,过滤隐藏的字母,要么返回“真”并显示该字母,要么返回“假/空”并发出警报();

这就是我目前过滤的方式。我不知道在哪里放置 if 语句,或者这是否是我应该采取的方法。

这是一个小提琴(隐藏的词是“密封”) - http://jsfiddle.net/GA7WB/

var $buttons = $('#letters span'),
    $hidden = $('.letter');

$buttons.click(function(){

    _selected = $(this).html();

    $hidden.filter(function() {
        return $(this).text() == _selected;
    }).show();

});
4

2 回答 2

2

您只需要检查过滤器返回的结果的长度:

// get matched elements
var matches = $hidden.filter(function() {
    return $(this).text() == _selected;
});

// show them, or alert if none
if (matches.length > 0) matches.show();
else alert("There are no " + _selected + "'s");

见小提琴

于 2013-07-23T21:50:31.850 回答
1

如果找到一个标志,请尝试设置一个标志:

var $buttons = $('#letters span'),
var $hidden = $('.letter');

$buttons.click(function(){
    _selected = $(this).html();

    var foundOne = false;
    $hidden.filter(function() {
        var retval = $(this).text() == _selected;
        if (retval) foundOne = true;
        return retval;
    }).show();

    if (!foundOne) {
        alert("Nope");
    }
});

小提琴http://jsfiddle.net/GA7WB/4/

于 2013-07-23T21:53:31.647 回答