2013-07-23 18 views
2

很抱歉的可怕稱號,日上午在措辭這些東西太可怕了。顯示元素具有相同的HTML,如果沒有做出警告說:「沒有結果」

我所試圖做的是很簡單的,我認爲。

我有一組隱藏字母組成單詞。

他們下面是隨機混亂的字母選擇。

當人們點擊隨機混亂的信件,我通過隱藏的信件過濾,並顯示相應的字母之一。

我需要做的是,如果有人點擊了一封信,通過過濾隱藏的字母,要麼返回一個「真」,並顯示字母或返回一個「假/ 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(); 

}); 
+0

如果你試圖讓劊子手,確保:a)所有的隨機字母是獨一無二的,和b)在單詞的所有字母進行猜測出現在隨機的字母。 – MathSquared

+0

我有更多的代碼,但並不認爲我需要發佈,回答這個問題。你想讓我發佈完整的代碼嗎? –

+0

是的。始終發佈您擁有的所有代碼。 – MathSquared

回答

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

+0

謝謝!這正是我想要做的。對於newb問題抱歉,但您的if/else語句沒有任何波形括號。爲什麼是這樣?我總是把自己寫成像if(something){//做某事} else {//做其他事情} –

+0

@ ChrisG-Jones如果只有一條語句,你可以省略大括號 - 但有些人可能會認爲它不好。 – McGarnagle

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/

+0

謝謝,這也適用。 –