2014-02-14 86 views
0

我需要刪除此div id內的標籤。我在這裏做錯了什麼?從div ID刪除字符

function thanksForHelping(div){ 
    var siblingOne = $(div).next(); 
    var siblingTwo = $(div).next().next(); 
    var NIDsiblingOne = siblingOne.substring(1); 
    var NIDsiblingTwo = siblingTwo.substring(1); 
} 

我想看看:

siblingOne == #yo 
siblingTwo == #hi 
NIDsiblingOne == yo 
NIDsiblingTwo == hi 

但是我在我的控制檯收到此錯誤:
TypeError: siblingOne.substring is not a function

+0

siblingOne是一個元素,你想在其上調用subString() –

+0

感謝您的信息,我如何將其更改爲一個字符串,以便我可以調用它的subString。 – user3311351

+0

'$(div).next()[0] .id'應該返回一個字符串。 – Ryan

回答

2

.next()返回一個jQuery對象(docs),這就是爲什麼你不能請撥打substring()。如果你想要的ID,你需要使用attr()prop()

$(div).next().attr('id'); // or prop() 

雖然這是你要什麼的有點不清楚,但希望這應該指向你在正確的方向。

+0

謝謝。我需要將div變量應用於其中具有相同div名稱的類。 – user3311351

0

它看起來像你說你有一些div像<div id="#myid">這是不正確的。你不應該在ID中有#;這就是它在CSS查詢中被引用的方式。

但是,你可以使用鏈接鏈接到該分區是這樣的:<a href="#myid">在這種情況下,你會想剝離#得到,如果你打算用什麼來定位像getElementById()

即使是正確的值所以,你在一個jQuery對象上調用substring,而不是在id本身。嘗試是這樣的:

function thanksForHelping(div){ 
    var siblingOne = $(div).next(), siblingTwo = siblingOne.next(); 
    var existingIdOne = siblingOne.attr("id"); 
    var existingIdTwo = siblingTwo.attr("id"); 
    var noHashIdOne = existingIdOne.replace(/^#/, ''); //Using regex here in case it doesn't actually have a leading # 
    var noHashIdTwo = existingIdOne.replace(/^#/, ''); 
} 

如果你這樣做,是我之前提到的鏈接的事情,你有兩種方法來解決:1)獲取實際的ID就像我上面顯示,或使用jQuery,只是使用帶有散列的版本。所以,這樣的事情:

function elementsForIntraPageLinks(){ 
    var links = $("a.internal"); 
    links.each(function(i, link) { 
     var href = link.href; 
     var targetElement = $(href); 
     console.log("targetElement:", targetElement); 
    }); 
} 

或不jQuery的,但在一個現代的瀏覽器:

function elementsForIntraPageLinks(){ 
    var links = document.querySelectorAll('a[href^="#"]'); 
    links.forEach(function(link, i, links) { 
     console.log("targetElement:", document.querySelector(link.href)); 
    }); 
} 

或稍微舊的瀏覽器

function elementsForIntraPageLinks(){ 
    var links = document.getElementsByTagName('a'), i, ii, link; 
    for(i = 0, ii = links.length; i < ii; i++){ 
     link = links[i]; 
     if (/^#/.test(link.href)) { 
      console.log("targetedElement", document.getElementById(link.href.replace(/^#/, "")); 
     } 
    }); 
}