jQuery If已设置,或者If不为null
jQuery If is set, or if is not null?
我有以下jQuery代码:
$("#menu span").click(function() {
var url = this.getAttribute("data-url");
var mobile = this.getAttribute("data-mobile");
var facebook = this.getAttribute("data-facebook");
if (url) {
}
if (mobile) {
}
if (facebook) {
}
};
但它有点小故障。有没有其他方法可以用来查看此数据属性是否存在?代替使用if (url) { }
我的HTML将是这样的:
<ul>
<li><span data-mobile="1" data-url="http://url.com">Site #1</span></li>
<li><span data-url="http://site2.com" data-facebook="http://fblink">Site #2</span></li>
<li><span data-url="http://site3.com">Site #3</span></li>
</ul>
因此,并不是每个人都拥有所有的数据属性。
编辑:再次单击跨度后,如何清除所有内容?
例如:
if (data.mobile) {
$(".mobile").attr("data-link", data.mobile);
$(".mobile").attr('class', 'icon mobile on');
}
因此,默认情况下,类是用icon mobile off
加载的。然后,当单击跨度时,它会运行所有函数,如果它分配了mobile,那么它会将类转到icon mobile on
,这非常适合第一个视图。但当我去另一个跨度时,它没有手机,它仍然保持以前的状态。如何在每次新点击时清除类似内容?
<div class="icons">
<div class="icon website off" data-link=""></div>
<div class="icon mobile off" data-link=""></div>
<div class="icon fb off" data-link=""></div>
</div>
由于您使用的是data
属性,因此可以使用jQuery data()
方法来获取值并优化您的代码,如下图所示。
$("#menu span").click(function() {
var data = $(this).data();//Will get all data attribute as key/value pairs
if (data.url) {
}
if (data.mobile) {
}
if (data.facebook) {
}
};
如果有多个span
,则可以在#menu
上使用delegate
并查找span
,这样click
处理程序将仅在#menu
元素上附加一次。试试这个。
$("#menu").delegate('span', 'click', function() {
var data = $(this).data();//Will get all data attribute as key/value pairs
if (data.url) {
}
if (data.mobile) {
}
if (data.facebook) {
}
};
根据OP评论更新:
if (data.mobile) {
$('.icons').attr("data-link", data.mobile)
.removeClass('off').addClass('on');
}
else{
$('.icons').removeAttr("data-link")
.removeClass('on').addClass('off');
}
类似这样的东西:
var $spanObj = $("#menu span[data-url]").click(function() {
var url = this.getAttribute("data-url");
var mobile = this.getAttribute("data-mobile");
var facebook = this.getAttribute("data-facebook");
...
if (data.mobile) {
$spanObj.filter('[data-mobile]').attr('class','icon mobile off');
$(".mobile").attr("data-link", data.mobile);
$(".mobile").attr('class', 'icon mobile on');
}
});
仅选择包含要开始的数据url属性的跨度。
相关文章:
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- Javascript:如果数组有对象或不为空
- 仅当值不为'不存在
- 获取每个项目中不为 null 的最后一个项目
- 如果所有模型值都不为空,则显示角度
- 为什么我的变量同时为真和不为真
- Jquery,onBlur-如果不为空,则显示警报
- 如何使 React Native 的 ScrollView 初始缩放比例不为 1
- 删除'为Null'和'不为Null'来自Kendo Filters
- php中的函数或介于-200和200之间但不为零的数字
- 如果文本字段不为空,则自动将表单提交到url
- 如何验证具有必需属性或不为null的字段
- Javascript验证不起作用——只要一个if语句为true,它就会停止所有if语句
- ng-if JSON 值不为空
- 融合表 最大查询数 将数据设置为 0 IF 不返回任何行
- jQuery If已设置,或者If不为null
- 内部的HTML不以if函数为中心
- 两个if语句总是连接在一起,即使它不为真
- 查找if语句中不为真的特定参数