2012-08-13 19 views
-2

我正在使用一些jquery和javascript在這個奇怪的大雜燴代碼中混合起來。查找所選項目是否在一組中

var SELECTED_ELEMENT; //this ends up being a JS array of ELEMENTS like the following line. 
SELECTED_ELEMENT.push($(this).closest(".draggable")); 
//Now i wanted to select stuff 
$(".draggable").click(function(){ 
    var found = 0; 
    for (var i = 0; i < SELECTED_ELEMENT.length; i++){ 
     if(SELECTED_ELEMENT[i] == this){ 
     found = 1; 
     } 
    } 
    if(found == 1){ 
     alert("yep"); 
    }else{ 
     alert("nope"); 
    } 
}); 
//this doesnt seem to do what i want. 

現在的問題是,即使是這樣,它也永遠不會恢復正常。我只是試圖找到一種方式來在javascript搜索數組。你可能認爲通過陣列進行簡單的搜索會發現它,但可能是對'this'的不恰當引用。

+1

'int found = 0;'? :) – undefined 2012-08-13 15:34:23

+0

它不是在我的實際代碼中,我只是有一個會議來呈現,所以我不能在發佈時調整它。我想人們會明白我在做什麼。 – Fallenreaper 2012-08-13 16:08:03

回答

2

有一些問題,比如int found = 0這甚至不是JavaScript的。然後你將jQuery對象推送到一個數組,並將它們與dom元素進行比較。

推動因素,而不是:

var selectedElements = [], 

    closest = $(this).closest(".draggable")[0]; 

if(closest) { 
    selectedElements.push(closest); 
} 

$(".draggable").click(function() { 
    var index = selectedElements.indexOf(this); 

    alert(index > -1 ? "yep" : "nope"); 
}); 

演示:http://jsfiddle.net/sqj42/

+0

+1優秀的答案。 – Adil 2012-08-13 15:35:03

+0

+1:D – Esailija 2012-08-13 15:36:36

+1

哪裏對不起@Esailija,現在檢查一下。 – Adil 2012-08-13 15:38:30

1

在你的第二行中,你有SELECT_ELEMENT而不是SELECTED_ELEMENT

這是更短:

if(SELECTED_ELEMENT.indexOf(this) != -1) 
    alert('yep'); 
else 
    alert('nope'); 
+0

是啊,修復它,這只是一個語法錯誤,並沒有涉及到手頭的問題,這是通過點擊尋找一個匹配通過ah數組搜索。 – Fallenreaper 2012-08-13 16:11:59

0

真正的答案我一直在尋找,我發現:

我的搜索是錯誤的。它應該是:

var found = 0; 
for(var i = 0; i < SELECTED_ELEMENT.length; i++){ 
    if (this == SELECTED_ELEMENT[i][0]){ //the key is the extra [0] as the stored element is a jquery object, so it needs to be de-referenced by selecting the object itself and not the jquery wrapper-thingy for it.. 
     found = 1; 
    } 
} 
if(found == 1){ 
    alert("yep"); 
}else{ 
    alert("nope"); 
} 
相關問題