我有一个事件处理程序,它触发一个事件处理程序,需要测试div的子节点是否包含某个类。
现在,我这样做:
$('#Container .DivData').live({
mouseenter: function () {
if ($(this).find('.HiddenData')) {
// do something
} ....
问题是,即使有时没有HiddenData,它似乎总能找到HiddenData。
这里有什么问题?
答案 0 :(得分:3)
试
if ($(this).find('.HiddenData').length > 0) {
// do something
} ....
答案 1 :(得分:0)
如果找到您要查找的元素,您可以选择多种选项:
1)如果您想要做的事情是jQuery方法,并且您希望它对您正在寻找的事物进行操作,那么您不需要if
语句。您只需指定jQuery方法即可。如果找不到匹配的元素,它就不会做任何事情。
$(this).find(".HiddenData").fadeIn();
2)如果您要做的事情是jQuery方法,并且您希望它在父级上运行,那么您也不需要if
语句。您只需指定jQuery方法并使用.has()
方法而不是.find()
。如果找不到匹配的元素,它就不会做任何事情。
$(this).has(".HiddenData").css("color", "red");
3)如果逻辑更复杂并且您需要if
语句,那么您可以像这样执行if
语句:
if ($(this).find('.HiddenData').length > 0)