如何定义$var仅当parent ('.class').attr('id')存在

How to define $var only if parents('.class').attr('id') exists?

本文关键字:class attr 存在 id 仅当 何定义 定义 var parent      更新时间:2023-09-26

下面是我的代码:

<div class="superBlock" id="blabla">
    <a class="watch"><img src="images/blabla.png"/></a> 
    </br>
    <div class="btn-group-xs" role="group">
        <a type="button" class="btn btn-info info" data-toggle="modal" data-target="#myModal">Information</a>
    </div>
</div>
<div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-footer">
                <a type="button" class="btn btn-success watch" data-dismiss="modal">Watch</a>   
            </div>
        </div>
    </div>
</div>

$('.info').click(function() {
    var $watchID = $(this).parents('.superBlock').attr('id');
});
$('.watch').click(function() {
    if($(this).parents('.superBlock').attr('id') != "") {
        var $watchID = $(this).parents('.superBlock').attr('id');
    }
    alert($watchID);
});

我想做的是将$watchID设置为。superblock的ID,无论我点击。watch按钮还是。info按钮。

我得到$watchID是"未定义",当我点击信息按钮后点击模态手表按钮。

如果$(this).parents('.superBlock').attr('id')未定义,我希望$watchID继续被设置为. superblock的ID。因此,$watchID不能更改为未定义的$(this).parents('.superBlock').attr('id')

我该怎么办?这仅仅是语法的问题吗?如果是这样,我该如何改变?

这个HTMLdiv重复使用不同的ID,这就是为什么我不能只设置ID为"blabla"。

要判断选择器是否匹配任何内容,请检查jQuery对象的长度。

var superblock = $(this).closest(".superBlock");
if (superblock.length > 0) {
    $watchID = superblock.attr('id');
}

此外,如果您希望$watchID变量在调用之间保持不变,则应该在函数外部声明它。您的变量是每个函数的局部变量,因此当函数返回时它将被丢弃。

由于您只想要与该类最接近的父类,请使用.closest()而不是.parents(),后者将搜索整个DOM层次结构以查找多个匹配项。