首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果parents('.class').attr('id')存在,如何定义$var?

如果parents('.class').attr('id')存在,如何定义$var?
EN

Stack Overflow用户
提问于 2016-09-22 05:15:46
回答 1查看 81关注 0票数 0

下面是我的代码:

代码语言:javascript
复制
<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>

代码语言:javascript
复制
$('.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按钮。

当我在点击info按钮后点击模式手表按钮时,我得到的$watchID是“未定义的”。

如果$(this).parents('.superBlock').attr('id')是未定义的,我希望$watchID继续设置为.superBlock的ID。这样$watchID就不会更改为未定义的$(this).parents('.superBlock').attr('id')

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

这个HTML div使用不同的ID重复,这就是为什么我不能简单地将ID设置为"blabla“。

EN

回答 1

Stack Overflow用户

发布于 2016-09-22 05:27:38

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

代码语言:javascript
复制
var superblock = $(this).closest(".superBlock");
if (superblock.length > 0) {
    $watchID = superblock.attr('id');
}

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

由于您只需要与该类最接近的父类,因此使用.closest()而不是.parents(),后者在整个DOM层次结构中搜索多个匹配项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39626712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档