0

我想在使用 Jquery UI 构建的每个选项卡上放置一个滚动指示。碰巧下面的代码适用于第一个选项卡并停在那里。我进行了测试,直到所有 ul 的 if 语句都运行良好,但只有第一个 ul 通过 if 语句,即使第二个 ul 至少也给出了一个 true 的 if

我错过了什么?

我也明白 each() 会在错误的情况下停止。我怎么能绕过呢?

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> 
....
4

4 回答 4

2

其他标签是隐藏的,对吧?所以他们的高度和宽度将为0。

于 2013-08-20T22:46:31.380 回答
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 标记进行测试的情况下诊断您的实际问题。

于 2013-08-20T22:57:19.130 回答
0

在 Barbara Laird 向我展示了我想出以下内容的方式之后,这对我有用,供任何人参考。请注意,它需要在选项卡上激活(激活),而不是在激活之前,因为只有在激活之后您才能获得措施。

$(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);
}
}
});
});
于 2013-08-21T11:04:32.477 回答
-1

ids 应该是唯一的,这可能会导致您出现问题,请改用类名,也可能值得尝试++i;

于 2013-08-20T22:50:01.673 回答