関数内の各リンクのURLを返す次のコードがあります。
var nav_link;
$('#nav_what-we-do').find('.top-dropdown').find('a').each(function(index, elem) {
console.log("Descendant: " + elem.tagName + " " + elem.href);
the_link = $(this);
nav_link = elem.href.split('#');
if (nav_link[0] === '/what-we-do/') {
the_link.attr('href','#'+nav_link[1]);
the_link.click(function() {
var tab_id = $(this).attr('href');
selectTab(tab_id);
return false;
});
}
});
コンソールは次のようなリンクを出力します。
Descendant: A http://localhost/testsite/what-we-do/#solutions
Descendant: A http://localhost/testsite/what-we-do/#features
Descendant: A http://localhost/testsite/what-we-do/features/test
Descendant: A http://localhost/testsite/what-we-do/solutions/test2
ここで、ハッシュ(#)を含むリンクのみが必要であり、このハッシュを使用してそれらを分割します。次に、array(0)に「/what-we-do/」という文字が含まれているかどうかを確認します。私はこのようにリンクを分割しようとしました:
nav_link = elem.href.split('#');
しかし、IF部分は機能していません。
誰かが私が間違っていることを教えてもらえますか?
編集
TJからの提案によると
$('#nav_what-we-do').find('.top-dropdown').find('a').each(function(index, elem) {
//console.log("Descendant: " + elem.tagName + " " + elem.href);
var the_link = elem.href,
hashIndex = the_link.split("#");
if(hashIndex.length == 2) {
console.log(hashIndex);
console.log("Descendant: " + elem.tagName + " " + elem.href);
console.log('First part is: ' + hashIndex[0].indexOf("/what_we_do/"));
}
if (hashIndex.length == 2 && hashIndex[0].indexOf("/what_we_do/") !== -1) {
the_link.attr('href', "#" + hashIndex[1]);
the_link.attr('href', the_link.substring(hashIndex));
the_link.click(function() {
var tab_id = $(this).attr('href');
selectTab(tab_id);
return false;
});
}
});
コンソールで印刷すると、次のようになります。
["http://localhost/testsite/what-we-do/", "solutions"] site_javascript.js:133
Descendant: A http://localhost/testsite/what-we-do/#solutions site_javascript.js:134
First part is: -1 site_javascript.js:135
["http://localhost/testsite/what-we-do/", "features"] site_javascript.js:133
Descendant: A http://localhost/testsite/what-we-do/#features site_javascript.js:134
First part is: -1
最初の部分は値hashIndex[0].indexOf( "/ what_we_do /")である必要があります
hashIndexには文字列/what-we-do/があるので、何が起こっている可能性がありますか?