Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果div中存在元素,则Jquery添加类_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 如果div中存在元素,则Jquery添加类

Javascript 如果div中存在元素,则Jquery添加类,javascript,jquery,html,css,Javascript,Jquery,Html,Css,如果 艾哈迈德先生 分机13417 417/323房间 艾罗先生 分机13328 328/323房间 艾奥萨先生 分机13419 419/323房间 您可以执行以下操作: $('.staff-picture a').closest('.staff-container').addClass('pointer'); 我希望代码中的逻辑是显而易见的。试试这个: var $selector = $('.staff-container'); if($selector.find('.staff-pi

如果

艾哈迈德先生
分机13417
417/323房间

艾罗先生
分机13328
328/323房间

艾奥萨先生
分机13419
419/323房间

您可以执行以下操作:

$('.staff-picture a').closest('.staff-container').addClass('pointer');
我希望代码中的逻辑是显而易见的。

试试这个:

var $selector = $('.staff-container');
if($selector.find('.staff-picture').has('a')) {
    $selector.addClass('pointer');
}

$.closest()
向上而不是向下遍历树,因此您找不到任何东西

我喜欢用“反向”逻辑来处理这些类型的问题:

可能有一种方法可以“选择”您的
staff容器
父容器,但是如果DOM结构没有改变,这将非常有效


首先选择所有的a链接,然后只应用那些使用jQuery强大的选择代码的链接。它不依赖于if语句的测试。

我将首先遍历
.staff容器
div,然后使用一个条件,使用
this
对象作为上下文来确定哪些容器具有
标记:

//Goes through all the .staff-picture divs
$('.staff-container').each(function(){

    //If the a tag exists within the current .staff-picture (returned object isn't undefined)
    if($('a', this).html() != undefined){

        //Add the class if a exists
        $(this).addClass('pointer'); 
    }

});

编辑 对不起,我指的是员工容器,不是员工照片。但是,两者都可以

第二版
另外,如果您想知道原始方法为什么不起作用,那是因为您使用的条件(第一个
if
)没有实例化
这个
对象。也就是说,
在您的函数中不存在。

您确定需要此
!重要信息
?如果你的CSS代码管理得很好,你很少需要它。哦,如果是这样的话,那么你可以修改我下面的答案如下:$('.staff picture a').nest('staff-container').addClass('pointer);如果我相信的话,你甚至不需要这个。您只需执行$('.staff container').find('.staff picture').has('a').addClass('pointer')@ryanulit即可将类添加到
staff picture
而不是
staff container
在我的情况下,与这里的问题非常类似,这非常有效!必须从div中挖掘

标记,并使用
行高属性设置自定义类,以获得更固定的按钮视图。
$('.staff-picture a').closest('.staff-container').addClass('pointer');
var $selector = $('.staff-container');
if($selector.find('.staff-picture').has('a')) {
    $selector.addClass('pointer');
}
$('.staff-picture a').parent().parent().parent().addClass('pointer);
//Goes through all the .staff-picture divs
$('.staff-container').each(function(){

    //If the a tag exists within the current .staff-picture (returned object isn't undefined)
    if($('a', this).html() != undefined){

        //Add the class if a exists
        $(this).addClass('pointer'); 
    }

});