我有这个HTML。我试图显示给定李的隐藏取消按钮。 但不确定为什么我的代码不起作用。 我找到了正确的li元素,但我无法在所选的li项目中显示隐藏的取消按钮。
这是我的想法:
var $li = $('.qq-upload-list li.qq-upload-fail').eq(id); //I pass 0 based index correctly
if ($li != null && $li != undefined) {
$li.find('.qq-upload-cancel').show();
}
HTML:
<ul class="qq-upload-list">
<li class=" qq-upload-fail">
<div class="qq-progress-bar" style="display: none; width: 100%;"></div>
<span class="qq-upload-spinner" style="display: none;"></span>
<span class="qq-upload-finished"></span>
<a class="qq-upload-cancel" href="#" style="display: none;">Cancel</a>
<a class="qq-upload-retry" href="#">Retry</a>
<a class="qq-upload-delete" href="#">Delete</a>
<span class="qq-upload-status-text">Upload failed</span>
</li>
<li class=" qq-upload-fail">..</li>
</ul>
更新 我发现了这个问题。上面的html是由代码动态生成的。但是在我处理事件之后,代码就会出现问题。一旦我将代码移动到正确的事件处理程序,所有看起来都很好。
答案 0 :(得分:1)
jQuery eq()基于零,您可能希望使用eq(0)
代替eq(1)
。
请注意 jQuery对象始终是!= null
&amp;&amp; != undefined
,您可能需要检查那里的长度。与if($li && $li.length){
尝试:
var $li = $('.qq-upload-list li.qq-upload-fail').eq(0);
选项,使用:first
var $li = $('.qq-upload-list li.qq-upload-fail:first');
答案 1 :(得分:1)
由于eq()是0-based
索引,您需要更改:
var $li = $('.qq-upload-list li.qq-upload-fail').eq(1);
为:
var $li = $('.qq-upload-list li.qq-upload-fail').eq(0);
答案 2 :(得分:1)
你试过这个吗,
$('.qq-upload-list li.qq-upload-fail').find('.qq-upload-cancel').show();
要显示第三个取消按钮,
var $li = $('.qq-upload-list > li.qq-upload-fail').eq( 2 ); //I pass 0 based index correctly
$li.children('a.qq-upload-cancel').show();