我想在每个使用Jquery UI构建的选项卡上放置滚动指示。实际上,下面的代码适用于第一个选项卡并停在那里。 我测试了它直到所有ul的if语句都很好,但只有第一个ul通过if语句,即使第二个ul至少也给出了一个真如果
我错过了什么?
另外我明白每个()都会在假的情况下停止。我怎么能绕过那个?
var i = 0;
$(".comp_pr ul").each(function () {
var element0 = $(this).attr('id');
var element1 = "#" + element0;
var element = document.querySelector(element1);
if ((element.offsetHeight < element.scrollHeight) || (element.offsetWidth < element.scrollWidth)) {
$(element1 + ' ' + "li:nth-child(4) span:nth-child(3)").html('scroll <img id="" src="img/forward.png" title=""/>');
$(element1 + ' ' + "li:nth-child(4) span:nth-child(3)").attr('class', 'zscroll');
$(element1 + ' ' + "li:nth-child(4) span:nth-child(3)").attr('id', 'zs' + i);
}
i++;
});
HTML的快速摘要:
<div class="comp_pr">
<ul id="measure0">
<li></li>
......
</ul>
</div>
<div class="comp_pr>
<ul id="measure1"
<li></li>
......
</ul></div>
....
答案 0 :(得分:2)
隐藏其他标签,对吗?所以他们的身高和宽度都是0。
答案 1 :(得分:2)
你的代码效率非常低,这里是相同的代码,改进了:
$("#comp_pr ul").each(function (i) {
if ((this.offsetHeight < this.scrollHeight) || (this.offsetWidth < this.scrollWidth)) {
$(this).find('li:nth-child(4) span:nth-child(3)').html('scroll <img src="img/forward.png" title=""/>').addClass('zscroll').attr('id', 'zs' + i);
}
});
此外,我不确定我们是否可以在没有HTML标记的情况下诊断您的实际问题进行测试。
答案 2 :(得分:0)
芭芭拉莱尔德向我展示了我提出以下内容的方式,这对我来说很有用,可供任何人参考。 请注意,它需要在选项卡上激活(激活),而不是在激活之前,因为只有在激活后才能获得这些措施。
$(function() {
$( "#tabs" ).tabs({
activate: function(event,ui) {
var tabid = ui.newPanel.attr('id');
var i = tabid.charAt(tabid.length-1)-1;
ulid = "#measure" + i;
var element = document.querySelector(ulid);
if( (element.offsetHeight < element.scrollHeight) || (element.offsetWidth < element.scrollWidth)){
$(ulid).find('li:nth-child(4) span:nth-child(3)').html('scroll <img src="img/forward.png" title=""/>').addClass('zscroll').attr('id', 'zs' + i);
}
}
});
});
答案 3 :(得分:-1)
ID应该是唯一的,可能会导致您出现问题,使用类名,也可能值得尝试++i;