从div id中删除字符

时间:2014-02-14 22:20:28

标签: javascript jquery css

我需要删除此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

2 个答案:

答案 0 :(得分:2)

.next()返回一个jQuery对象(docs),这就是你无法在其上调用substring()的原因。如果您需要ID,则需要使用attr()prop()

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

虽然它有点不清楚你到底要做什么,但希望这可以指出你正确的方向。

答案 1 :(得分:0)

看起来你说你有一些像<div id="#myid">这样的div这是不正确的。你不应该在id中有#;这就是它在CSS查询中的引用方式。

但是,您可以使用链接链接到该div:<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并使用带有hash的版本。所以,像这样:

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(/^#/, ""));
        }
    });
}