我在这个奇怪的代码大杂烩中使用了一些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”
的错误引用答案 0 :(得分: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" );
});
答案 1 :(得分:1)
在第二行中,您有SELECT_ELEMENT
而不是SELECTED_ELEMENT
。
这更短:
if(SELECTED_ELEMENT.indexOf(this) != -1)
alert('yep');
else
alert('nope');
答案 2 :(得分: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");
}