如何定义$var仅当parent ('.class').attr('id')存在
How to define $var only if parents('.class').attr('id') exists?
下面是我的代码:
<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层次结构以查找多个匹配项。
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 当浏览器上的后退按钮到达主页时,我需要删除Class
- 通过id和class属性获取元素
- 使用AngularJs时,如何在img标记具有src-attr时设置数据src
- 菜单栏class=活动引导程序主题无法正常工作
- $(.class).empty总是缺少一个元素
- jQuery中的attr()是否强制小写
- jQuery[button.class]未检测到用按钮追加行
- JQuery .attr();
- javascript点击函数不;不适用于ID和Class
- HTML class=Ajax操作,如何让类点击调用好的操作
- $(this).attr({class:“activeTab”});不起作用,因为这是未定义的
- Target.attr('class') 在 Mozilla 中是未定义的
- .attr('class') 返回多个类名,如何选择我想要使用的类名
- 使用jquery将attr更改为class
- 如何定义$var仅当parent ('.class').attr('id')存在
- 在jquery中使用.attr(“class”)获取具有多个类的元素的第N个类
- Angular 2 [attr.class] 覆盖原生 DOM 类
- removeClass 不适用于 $(this).attr('class'),而是 $(this).attr('id')
- JQuery attr('class')不像预期的那样在Mozilla中获取classname