我有这样的HTML。
<span class="gallery-open-item year-icon-Yes 2010">
<a href="/year/none">
</a>
</span>
我需要使用jQuery检查span.gallery-open-item
是否有year-icon-Yes
类,如果是,请使用下一个(此示例为2010)类并将其放在href
属性中,如下所示:
<a href="/year/2010"/>
我需要的所有这些都是jQuery或JavaScript。
我做了一些实验,但我不能把2010带到正常的javascript变量。 有什么想法吗?
抱歉我的英文。
答案 0 :(得分:2)
这是另一种方法。经过测试,工作。
$('.gallery-open-item.year-icon-Yes').each(function(){
that = this;
var classes = $(this).attr('class').split(' ');
$.each(classes, function(i, val) {
if (val.match(/^y-/gi)) {
$('a', that).attr('href', function(){
return this.href.replace('none', val.split('-')[1]);
});
}
});
});
假设这个标记:
<span class="gallery-open-item year-icon-Yes y-2010">
<a href="/year/none/">
Test
</a>
</span>
答案 1 :(得分:1)
这是一种做法。首先,我们选择同时包含span
和gallery-open-item
类的year-icon-Yes
代码。然后,对于它们中的每一个,我们将获得span
标签所具有的类数组。我循环遍历类名,并检查第一个是否为数字。最后,修改a
内的span
标记以设置所需的网址。
$(document).ready(function() {
$('span.gallery-open-item.year-icon-Yes').each(function() {
var classNames = $(this).attr('class').split(' ');
for (var i = 0; i < classNames.length; i++)
{
if (!isNaN(classNames[i]))
{
var year = classNames[i];
$(this).find('a').attr('href', '/year/'+year);
break;
}
}
});
});
修改:根据类名称不应以数字开头的注释,对于y-xxxx
形式的类名称来说,这很容易实现:
$(document).ready(function() {
$('span.gallery-open-item.year-icon-Yes').each(function() {
var classNames = $(this).attr('class').split(' ');
for (var i = 0; i < classNames.length; i++) {
var year = classNames[i].substring(2);
if (!isNaN(year)) {
$(this).find('a').attr('href', '/year/' + year);
break;
}
}
});
});
答案 2 :(得分:1)
这个怎么样:
$('span.gallery-open-item.year-icon-Yes > a').each(function(i, elem) {
$.each($(elem).parent().attr('class').split(' '), function(j, klass) {
// NOTE: use /^y-([\d]*)$/ if years are prefixed with y-
if (year = klass.match(/^([\d]*)$/))
$(elem).attr('href', $(elem).attr('href').replace('none', year[1]));
});
});
这将迭代SPAN标记下的每个A标记并从每个父标记中获取类,搜索这些标记以获取数字并替换“下一个”部分。
更新:为您切换到前缀年份的案例添加了评论。
更新2:现已测试并正常工作(通常使用Prototype *叹气*)。