我有这个HTML
<div class="1" style="" title="NeedthisText TextIDontneed">
<div class="2">
<div class="3">
<a target="_blank" href="/NeedToChange/DispForm.aspx?ID=1">Link</a>
</div>
</div>
</div>
我想知道如何更改href的“/ NeedToChange /”部分,具体取决于class="1"
的div的标题值是否包含我需要的文本。
非常感谢任何帮助
答案 0 :(得分:1)
类不能以Number开头! (JS可能会工作,但CSS会失败,你的文档也不会验证。)
如果您无法控制"NeedToChange"
,则可以使用正则表达式定位并替换斜杠字符之间的任何文字/unknownFolder/
,/anything/
$(".1[title]").each(function(){
var title = this.title.split(" ")[0]; // Get only 1st part of title
$(this).find(".3 a").attr("href", function(idx, val){
return val.replace(/^\/([^\/]+)/, "/"+title);
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="1" style="" title="SomeText1 I_DONT NEED this">
<div class="2">
<div class="3">
<a target="_blank" href="/NeedToChange/DispForm.aspx?ID=1">Link ID=1</a>
</div>
</div>
</div>
<div class="1" style="" title="WOOOOOW NeitherThis">
<div class="2">
<div class="3">
<a target="_blank" href="/NeedToChange/DispForm.aspx?ID=37">Link ID=37</a>
</div>
</div>
</div>
&#13;
以上将导致新的hrefs:
/SomeText1/DispForm.aspx?ID=1
/WOOOOOW/DispForm.aspx?ID=1
[title]
$(".1[title]")
确保我们定位.1
(BTW不是有效的类名:))元素实际上是一个标题。
.find()
内部.3
Anchor孩子相比,使用RegExp访问.attr("href",
return
replace
seek
个gets
:/^\/([^\/]+)/
Explained on regex101.com 答案 1 :(得分:0)
你会这样做:
if ($('.one').attr('title') == 'SomeText1') {
$('a[href*="/NeedToChange/"]').each(function(){
var newLink = $(this).attr('href').replace('/NeedToChange/','/NewLink/');
$(this).attr('href',newLink);
});
}
我将班级改为“一个班级”。因为你不应该用数字开始上课。
这是example。
答案 2 :(得分:0)
循环浏览所有链接并获得父母标题如下: jsfiddle
$( ".3 a" ).each(function(){
var $parent = $( this ).closest( ".1" ),
title = $parent.attr( "title" ),
link = "/" + title + "/DispForm.aspx?ID=1";
$( this ).attr( "href", link );
});
这似乎适用于以下html:
<div class="1" style="" title="SomeText1">
<div class="2">
<div class="3">
<a target="_blank" href="/NeedToChange/DispForm.aspx?ID=1">Link 1</a>
</div>
</div>
</div>
<div class="1" style="" title="SomeText2">
<div class="2">
<div class="3">
<a target="_blank" href="/NeedToChange/DispForm.aspx?ID=1">Link 2</a>
</div>
</div>
</div>
抱歉,刚才看到标题带有空格。将寻找更新。
更新1:
和Roko C. Buljan一样,你提到你应该将一个标题拆分成一个数组并获得它的第一个元素。$('.1').each(function (){
var title = $(this).attr("title"),
clTitle = title.split(" ")[0];
var $link = $(this).find(".3 a"),
href = $link.attr("href"),
newHref = href.replace("NeedToChange", clTitle);
if(typeof $(this).attr('title') !== 'undefined') {
$link.attr("href", newHref);
}
});
更新小提琴:jsfiddle