如果有相同的html,则显示元素,如果没有,则显示“无结果”的警报

时间:2013-07-23 21:38:58

标签: javascript jquery html html5

对于这个可怕的头衔感到抱歉,我写这些东西很糟糕。

我想要做的事情很简单。

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

下面是随机混乱的字母选择。

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

我需要做的是,如果有人点击一封信,过滤隐藏的字母并返回“true”并显示该字母或返回“false / null”并发出警告();

这就是我目前的过滤方式。我很困惑在哪里放置一个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();

});

2 个答案:

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

See Fiddle

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

FIDDLE http://jsfiddle.net/GA7WB/4/