在一个元素上添加两次相同的类
Add two times the same class on one element
最近我正在为我的工作对一个遗留项目进行一些重构,我可能偶然发现了一些"bug"。
在框架中的某个地方,一个自定义页面加载程序从端点读取controller/action
,并将它们作为两个类应用于主体。
它确实让我们这样说:
$('body').removeAttr("class").addClass(controller + ' ' + action);
以index
为控制器,以cars
为动作,物体看起来像:
$('body').removeAttr("class").addClass('index cars');
<body class="index cars">
到目前为止还不错(不太好)。
稍后再次匹配您要做的特定元素:
$('.index.cars')
现在,如果操作和控制器的名称相同,就会出现问题。应用了这两个类,比方说cars/cars
看起来是这样的:
<body class="cars cars">
选择器$('.index.cars')
与上述功能配合良好。
现在有趣的是,如果您尝试使用jQuery1.11.1添加类,那么这是行不通的。它不能在一个元素上添加具有相同名称的第二个类。
所以这个:
$('body').removeAttr("class").addClass('cars cars');
<body class="cars">
不起作用:-(
在谷歌和这里搜索了一点,但找不到什么。
问题是:
在一个元素上有两次相同的类有效吗?如果是的话,那么除了创建一个带有类的选择器之外,还有什么具体的原因会让人这么做吗?
一个元素有多个重复类是有效的。点击此处查看Moz Developer参考资料:https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/class
基本上,无论调用什么,都会识别同一元素的两个实例,但会将其视为一个类。
为了回答你的第二个问题,关于有人利用这个的原因……我个人想不出一个?
对于上面的问题,您将删除元素上的属性"class",然后将其添加回类值。例如:<div class="car">
变成<div>
,然后变成<div class="controller action">
你可以用.removeClass
来代替.removeAttr
请参见此处:http://api.jquery.com/removeclass/
希望有帮助吗?祝你好运
- 一个接一个地追加两次
- window.onclick在一个网站中使用两次
- 调用一个函数两次
- 在页面中使用了两次多个图像上传,但第一个正在工作,另一个不起作用
- 必须单击两次才能得到一个响应
- 在一个页面中包含两次的脚本中调用函数
- 在一个页面中使用相同的javascript函数两次
- JS函数中的一个点击按钮被调用了两次
- “index.swf”嵌入在“index.html”中,在一个页面中显示同一网站两次.HTML 标题标签/属性也显示值“
- Magento:需要一个跨浏览器的“继续购物”(后退两次)按钮来重新加载当前类别页面
- 有没有办法不在一个按钮上点击两次?PHP,JavaScript
- jQuery 函数 - 单击两次返回一个值
- 如何将一个事件绑定两次到 JavaScript 插件
- Ajax 触发两次替换 Rails 4 中的最后一个请求内容
- JavaScript正则表达式使用一个字符两次
- jQuery:调用一个函数两次
- 在同一元素上单击两次,然后在另一个元素上单击两次,使第一个元素进入“单击”状态
- 不可能在一个页面中使用两次JavaScript
- 反应/回流数据流:DOM 中一个组件两次
- 烦恼node.js为一个页面刷新调用httpserver回调函数两次