我需要删除此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 :(得分: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(/^#/, ""));
}
});
}