插入类中间列表
Insert In Middle Of Class List
我目前正在开发一个供我个人使用的JQuery应用程序,作为快捷方式,我正在根据列表中的最后一个类做出决定,它始终是各种标识符。这已经在许多地方完成,例如:
$("#myelement").attr('class').split(/'s+/).pop()
元素的类类似于:
class1 class2 class_with_id
问题是现在我在代码中有一个地方尝试将类添加到列表中,我通常会这样做:
$("#myelement").addClass("newclass")
但是,这使得类如下所示:
class1 class2 class_with_id newclass
稍后获取标识符类将失败。我得到了它的工作:
$("#myelement").attr('class', "newclass " + $("#myelement").attr('class'))
这是将其添加到开头:
newclass class1 class2 class_with_id
我有两个问题,都相关:
这是将其添加到开头的最简单/最简单的方法吗?
有没有一种简单的方法可以在集合中间添加类,而无需进行花哨的字符串操作。 即说我希望它是倒数第二个元素:
class1 class2 newclass class_with_id
如注释中所述,最好为此目的使用 data-* 属性,因为像现在这样使用 class 属性不是一个好习惯,它不是针对这些情况制作的,所以例如替换:
$("#myelement").attr('class').split(/'s+/).pop();
由:
$("#myelement").data('with-id');
要获取属性data-with-id
,请通过以下方式添加:
$("#myelement").data('with-id','some value');
而不是:
$("#myelement").addClass("newclass");
希望这有帮助。
-
是的。
-
不是我知道的。
class 属性是一个字符串,因此如果没有某种形式的字符串操作,我看不到任何方法来执行您正在寻找的内容。
var original = 'class1 class2 class_with_id'; var newClass = 'new_class'; var index = original.lastIndexOf(' '); var updated = original.slice(0, index) + ' ' + newClass + original.slice(index);
会给你
class1 class2 new_class class_with_id
.另一种选择是为字符串创建自己的拼接或插入方法。
String.prototype.insert = function (index, string) { if (index > 0) return this.substring(0, index) + string + this.substring(index, this.length); else return string + this; }; var original = 'class1 class2 class_with_id'; var newClass = 'new_class'; var index = original.lastIndexOf(' '); var updated = original.insert(index, ' ' + newClass);
注意:正如卡尔-安德烈·加农所说。与当前方法相比,最好使用自定义数据属性。您可能会发现您的方法限制了您使用任何修改类的插件。
我不完全确定你为什么要使用这些类。但是假设由于某种原因你不能使用某些建议的数据,并且你更喜欢使用类,你可以创建一个jquery函数,以便能够轻松调用它。
$.fn.addClassAt = function(index, newClass){
var classArray = $(this).attr('class').split(' ');
classArray.splice(index, 0, newClass);
var newClassStr = classArray.join(' ');
return $(this).attr('class', newClassStr);
}
您现在可以将其用作
$("#myElement").addClassAt(2, 'newClass')
- 要求输入在数据列表中
- 从javascript创建一个列表
- 如何使用jQuery选择下拉列表的值
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- Javascript按钮下拉列表
- 如何使用json将对象列表从java转换为javascript
- 区分JSON中的矩阵和列表列表
- jQuery表单添加不适用于下拉列表
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 接受不在列表中的值-引导组合框
- 禁用jQuery中的下拉列表
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 如何在javascript中迭代数字列表
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 如何在按钮中显示下拉列表中选定的元素
- Express :如何将中间件独占添加到路由器对象中的大型路由列表中
- 下拉列表位于页面中间,应根据位置打开列表
- React -从列表中间删除最后一个元素
- 插入类中间列表