如果条件,我希望将当前选择器与JavaScript中存储的节点进行比较。
在我的代码中,我创建了一个图像节点和li节点数组。我希望能够将用户当前悬停的li与links数组中的元素进行比较,例如,当前悬停的链接是否与links [0]相同?
我尝试了许多方法来检查jQuery(this)和链接之间的相等性,但是我无法通过if语句来找到它们是否相等。您能告诉我如何将当前选择器与存储在数组中的选择器位置进行比较吗?
下面是我的代码(我使用jQuery作为选择器,因为这是一个Wordpress网站):
jQuery("li.menu-cloud").hover( function(){
// Identify the containers of the links and the featured images:
var nav = document.getElementById("nav");
var holder = document.getElementById("img-holder");
// Creates an array of the individual links and featured images of the menu links:
var pics = holder.getElementsByTagName("img");
var links = nav.getElementsByTagName("li");
//Store current li in a variable to test:
var element = jQuery(this);
if ( links[0] == element )
{
alert("links[0] equals this element");
}
else {}
},
function() {
alert("You have left a menucloud link.");
});
答案 0 :(得分:1)
您正在将数组项(DOM元素)与jQuery对象进行比较。相反,您应该比较jQuery选择的实际元素,可以使用索引访问器(element[0]
)或.get()
方法(element.get(0)
)
例如
if (links[0] == element[0])
或
if (links[0] == element.get(0))
答案 1 :(得分:0)
您可以将li.menu-cloud
和nav.li
的属性添加为data-name="img1"
,这样就可以在这些属性之间进行比较,例如以下代码:
$("li.menu-cloud").each(function () {
$(this).on('hover',function () {
// Identify the containers of the links and the featured images:
var nav =$("#nav");
var holder = $("#img-holder");
var data_name_img=$(this).attr('data-name');
// Creates an array of the individual links and featured images of the menu links:
var pics = holder.find("img");
var links = nav.find("li");
//Store current li in a variable to test:
var element = jQuery(this);
$.each(links,function (i,v) {
if (data_name_img===$(v).attr('data-name')){
console.log($(v)+" equals this element");
}
})
})
})