2

我在确定特定 dom 对象是否可见时遇到问题。我将以下代码输出到控制台,即使我可以在屏幕上看到该元素,它也总是返回 false。

console.log(itemElement.innerText +" is visible: " + $(itemElement.id).is(':visible'));

我正在测试的上下文是查看 jQuery Accordion 对象中的列表项是否可见。我正在遍历所有列表元素(包括子列表元素)并执行此检查。始终检查返回 false。我到处搜索答案,但找不到答案。

这是显示布局外观的 html。我已经对其进行了一些编辑以使其合理,但您应该对它的设置方式有一个很好的了解。

<div id="collection_form">
  <div id="element_container">
    <ul class="element_list element_group ui-sortable">
       <li id="de_1" class="element_group_parent eg-collapsed element_group_leaf">
          stuff in here is same as below
       </li>
       <li id="de_29" class="element_group_parent eg-collapsed element_group_leaf">
         <div>
           <span>Room Booking</span>
           <span class="element_type"> - Group</span>
           <span class="remove_element">remove</span>
           <div style="clear:both"></div>
         </div>
         <ul class="element_group">
           <li id="de_30" class="element_config_form element_group_leaf">
              <div>
                <span>Room Number</span>
                <span class="element_type"> - Text</span>
                <span class="remove_element">remove</span>
                <div style="clear:both"></div>
              </div>
           </li>
         </ul>
      </li>
      <li id="de_31" class="element_group_parent eg-collapsed element_group_leaf">
        <div></div>
        <ul class="element_group">
          <li id="de_32" class="element_config_form element_group_leaf">
              <div> more stuff </div>
          </li>
        </ul>
      </li>
    </ul>
  </div>
</div>

我做错了什么?

4

1 回答 1

0

试试这个 :

 $(itemElement).is(':visible');  // this works if itemElement is a DOM element, or even if itemElement is a jQuery wrapped DOM elemenent

我怀疑你itemElement.idundefined

但是如果 itemElement.id 被正确定义(作为你的 itemElement 的 id,在这种情况下意味着 itemElement 是一个 DOM 元素)你可以做到这两个:

$("#"+itemElement.id).is(':visible');

甚至更好:

$(itemElement).is(':visible');
于 2012-10-05T18:50:15.090 回答