使用Jquery编辑类
Editing a Class with Jquery
尽管听起来很奇怪,但我有一个完整的url作为我的一些html元素的类。显然,这对css puposes不起作用。我想做的是删除除了页面碎片之外的所有东西。这是我目前拥有的一个例子。
<li class="menu-item http://example.com/page-link/">some code</li>
就html而言,我想最终得到的是:
<li class="menu-item page-link">some code</li>
我正在考虑使用.replacement方法来替换"http://example.com/"除了删除尾部斜杠和url的开头,我什么都没有。这是我的想法。
var strclass = $(li[class*=http://example.com/]).attr('class').match(/'bhttp://example.com/.+?'b/);
var newclass = strclass.replace("http://example.com/", "").replace("/", "")
感谢您的帮助。如果我上面的代码走错了方向,请提供你认为我应该找的地方的链接。
******我正在尝试一些新的东西,并寻求更多的反馈!******
这是我结合您的一些绝妙想法编写的新代码。
if(li.hasClass('menu-item')) {
var strclass = $('li.menu-item').attr('class');
var newclass = strclass.split(" ")[1].split("/")[3];
$(".menu-item").removeClass("http://example.com/" + strclass + "/").addClass(newclass);
}
我现在遇到的问题是if语句中的第三行,我删除了带有完整url的旧类,并添加了只带有page slug的新类。如果有人知道如何实现这一点,或者其他可以做同样事情的事情,请告诉我。感谢大家的辛勤工作和及时回复!
这正是您正在尝试的:
var items = document.querySelectorAll("li.menu-item");
alert(items.length + " items with classes that need to be changed found.");
for(var i = 0 ; i < items.length; ++i){
var classes = items[i].className.split(" ");
items[i].className = classes[0] + " " + classes[1].split("/")[3];
alert("New class attribute value is: " + items[i].className);
}
.menu-item { font-family:Arial; font-size:1.5em; }
.page-link { background-color: red; }
.something {background-color: green;}
.go-somewhere {background-color: yellow; }
<li class="menu-item http://example.com/page-link/">some code</li>
<li class="menu-item http://example.com/something/">some code</li>
<li class="http://example.com/go-somewhere/">some code</li>
<li class="menu-item http://example.com/go-somewhere/">some code</li>
var strclass = "menu-item http://example.com/page-link/";
var newclass = strclass.replace("http':'/'/.+'/(.+)'/", "$1");
现在我不知道这是否能解决你所有的问题,但听起来你太具体了。只需制作一个更通用的表达式,并替换类字符串的那部分。
如果你想要一些不那么贪婪的东西,只获取最后一个文件夹
var newclass = strclass.replace("http':'/'/.+'/([^'/]+)'/", "$1");
您可以使用斜线来构建数组:
url = url.split("/");
然后获取段塞,它将是数组中的最后一个或倒数第二个元素,具体取决于是否有拖尾元素。
if (url[url.length - 1]) {
slug = url[url.length - 1];
} else {
slug = url[url.length - 2];
}
我可能会用这个正则表达式替换:/.*?([^/]+)'/?$/
$('li[class*="http://"]').each(function(){
var pattern = new RegExp('^https?://');
var classes = this.className.split(' ');
for(var i = 0, len = classes.length; i < len; i++) {
if(pattern.test(classes[i])) {
classes[i] = classes[i].replace(/.*?([^/]+)'/?$/, '$1');
}
}
this.className = classes.join(' ');
});
.page-link {color: green;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li class="menu-item http://example.com/page-link/">some code</li>
<li class="menu-item http://example.com/page-link/">some code</li>
<li class="menu-item http://example.com/page-link/">some code</li>
请注意,我的解决方案有一个针对http和https进行测试的regex(不包括//example.com/whatever/
语法和相对url),但jQuery选择器只获取http链接列表项。您可能应该为此创建一个类。类似linked-list-item
之类的东西。
- 如何使用jQuery可编辑插件检查ajax是否成功完成
- 使用JQuery或Javascript编辑HTML注释文本
- 使用模态对话框(JQuery)编辑函数
- jQuery/Javascript在内容可编辑的当前段落后插入元素
- 使用jQuery编辑iframe-src
- Jquery脚本未在运行时加载编辑:意外的令牌
- 如何根据某些条件向可编辑的jquery数据表添加或删除按钮
- Javascript/jQuery在可编辑的DIV中设置光标
- 计算content中的数字总和使用Jquery可编辑文本
- 无法根据用户在编辑窗口中的输入显示/隐藏jtable jquery字段
- JavaScript:将所见即所得编辑器对实时站点的更改转换为jQuery操作
- 如何在 jquery 中创建可编辑的表列
- 编辑 jQuery 插件以匹配不同的 jQuery 版本
- 内容可编辑 - JQuery 仅将内容保存到网页(以及添加和删除)
- 编辑JQuery文档时出现问题
- 在Chrome和IE中编辑jquery更改事件期间元素的显示
- 我如何编辑jquery.在angular中验证消息
- 单击复选框,禁用行以进行编辑-Jquery、Jedit、Datatable
- 将光标移动到下一个内容可编辑 - JQuery
- 我目前正在为显示结果的基本问答测试编辑Jquery