Javascript 列出类元素(索引)。fadetoggle(某些速度)不工作
我有两个班级项目列表Javascript 列出类元素(索引)。fadetoggle(某些速度)不工作,javascript,jquery,Javascript,Jquery,我有两个班级项目列表 var listEditCommitLinks = document.getElementsByClassName('edit-comment-link'); var listEditCommitWrappers = document.getElementsByClassName('edit-commit-wrapper'); 链接和包装 <a href="#" class="edit-commit-link">Edit</a> <div c
var listEditCommitLinks = document.getElementsByClassName('edit-comment-link');
var listEditCommitWrappers = document.getElementsByClassName('edit-commit-wrapper');
链接和包装
<a href="#" class="edit-commit-link">Edit</a>
<div class="edit-commit-wrapper">
..
</div>
默认情况下,每个包装都是隐藏的,并且应该在链接单击时淡出切换(使用相同的列表索引nr)
但出于某种原因,这不适合我。
用于浏览列表的js:
for (var i = 0; i < listEditCommitLinks.length; i++) {
listEditCommitLinks[i].onclick = function () {
listEditCommitWrappers[i].fadeToggle(200);
}
}
for(var i=0;i
错误:
未捕获的TypeError:ListedCommitterRappers[i]。fadeToggle不是函数
增加
有办法解决这个问题吗?jQuery解决方案也很好(我在js之前尝试过,但也没有成功)。谢谢问题是,
fadeToggle
是一个jQuery实例方法,ListedCommitterRappers
中的项是而不是jQuery对象。那么
jQuery(function($) {
$('.edit-commit-link').on('click', function(e) {
e.preventDefault();
$(this).next('.edit-commit-wrapper').fadeToggle(200);
});
});
看
正在工作的jsFiddle~
要使它与您的pastebin HTML一起工作,您可以尝试类似的东西,尽管我觉得它变得越来越凌乱
$(this).closest('.row').next('.edit-commit-wrapper').fadeToggle(200);
请参见for循环没有如您所想的那样正常工作,因为当for结束时,所有I实际上都是(listedCommitLink.length+1)。不是0,1,2。。。你可以这样写一个闭包
for (var i = 0; i < listEditCommitLinks.length; i++)
{
listEditCommitLinks[i].onclick = (function (a)
{
return function ()
{
listEditCommitWrappers[a].fadeToggle(200);
}
})(i);
}
for(var i=0;i
样式应为display:none
,而不是display=“none”
@Phil抱歉拼错了我的帖子您的问题HTML与您的邮箱中的HTML完全不同。如果你没有提供正确的信息,你怎么能期望得到帮助呢?这不是整个js循环吗?似乎不起作用:(.解释“似乎不起作用”的实际含义。你的JavaScript控制台中有错误吗?对不起,现在有错误了,我正在调试atm以检查是做什么(或不做什么)。我认为这可以通过你给我的解决方案/链接来完成。我认为下一个没有找到下一个,因为有一些嵌套的div(不确定(?)。我添加了一个帕斯塔宾代码来描述div的真实外观like@JimVercoelen这是因为你的代码有edit comment link
但你的HTML有edit commit link
。我已经在我的回答中修复了它,这是一个糟糕的问题,但现在它可以像你说的那样工作了。谢谢。这很好,但是listedcommitwrappers[a]
仍然需要包装在jQuery对象中,它才能获得fadeToggle
for (var i = 0; i < listEditCommitLinks.length; i++)
{
listEditCommitLinks[i].onclick = (function (a)
{
return function ()
{
listEditCommitWrappers[a].fadeToggle(200);
}
})(i);
}