为什么我不能使用自定义选择的属性
Why can I not use custom selected attribute?
我正在尝试在我的HTML中使用自定义的"selected"属性,jQuery总是返回此属性的错误值。我知道,"选定"在选项标签中使用,但为什么我不能在其他标签中使用它?只需查看示例:http://jsfiddle.net/SE7FB/8/
<div class="category" selected="false">First</div>
<div class="category" selected="false">Second</div>
<div id="tester" style="width: 100px; height: 100px; float: right; background-color: black;"></div>
JavaScript:
$(".category").click(function () {
$("#tester").css("background-color", "rgb(" + Math.floor(Math.random() * 255) + "," + Math.floor(Math.random() * 255) + "," + Math.floor(Math.random() * 255) + ")");
$("#tester").append("<p>" + $(this).attr("selected") + "</p>");
if ($(this).attr("selected") == "true") {
$(this).css("background-color", "transparent");
$(this).attr("selected", "false");
} else if ($(this).attr("selected") == "false") {
$(this).css("background-color", "blue");
$(this).attr("selected", "true");
}
});
为什么我不能在其他标签中使用它?
因为它不是有效的 HTML。然后,浏览器将出现意外行为。
如果要使用自定义属性,请使用data-*
属性:
<div class="category" data-selected="false">First</div>
$(".category").data('selected'); // get
$(".category").data('selected', value); // set
链接:
- https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes
- http://api.jquery.com/data/
- http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#custom-data-attribute
我认为
,问题不在于它本身"不起作用",而只是它以一种稍微出乎意料的方式工作。
例如,如果我们稍微修改您的 HTML:
<div class="category" selected="false" data-selected="false">First</div>
现在在你的Javascript中添加一些行:
console.log($(this).attr('data-selected'));
console.log($(this).attr('selected'));
(小提琴)
令人惊讶的事情发生了。第一行记录false
,如您所料。第二行记录selected
。显然,浏览器(在我的情况下是 Chrome,我还没有测试过其他人)jQuery(根据 Blue Skyes 的评论)正在做它会做的事情,比如说,一个 option
元素,并使selected
属性的值成为字符串selected
,无论实际内容是什么。
解决方案是什么?不要以与预期相反的方式使用属性。遵循规范,您的生活将更加快乐。HTML5提供了data-*
属性,您可以尽情使用。
相关文章:
- jQuery最近父级的数据属性选择器
- javascript对象操作:根据指定条件选择属性
- Javascript:从数组中的对象中选择属性
- 如何在 javascript 中为没有值的标签选择属性
- jQuery按名称选择属性只选择第一个匹配的元素
- 使用 Angular 从服务器端生成的下拉列表中获取选择属性值
- 如何在 Javascript 中从对象中选择属性
- 选择属性在更改选择元素后未更改
- jQuery - 选择属性名称(非值)以 .. 开头的所有元素
- j查询选择属性
- 选择“属性的一部分-JQuery”
- 检查是否下拉'的第一个选项已选择属性
- JQuery选择属性范围
- jquery-attr选择器不会选择属性的全部值
- 强制dijit.form.ComboBox的选择属性
- 选择属性设置为特定值的元素中的所有元素
- 使用& # 39;这个# 39;选择属性,然后与选定的HTML属性进行比较
- 按掩码选择属性
- 在Chrome上XPath选择属性失败
- amCharts选择属性值