元素的-1索引是什么意思?

时间:2015-05-28 08:27:30

标签: javascript jquery html

我正在尝试调试下面的jquery / js代码。所以我一直在寻找元素的索引。但是它正在返回-1

jsFiddle中它运作良好。但是在迁移到asp.net IDE时,这是-1

标记:

<div class="cart">
   <h2>Cart 1</h2>
   <p>Books </p> 
     <table class="cartcontent" data-options="fitColumns:true, singleSelect: true">                                
         <thead>
           <tr>
               <th data-options="field:'name',width:100">Name</th>
               <th data-options="field:'quantity',width:100">Quantity</th>
               <th data-options="field:'balance',width:100,align:'right'">Balance</th>
               <th data-options="field:'remove',width:100,align:'right'">Remove</th>
            </tr>
         </thead>
      </table>
</div>

的jquery / JS:

function loadData(cartIndex, event) {        
    alert($('.cart').index());
    var $cart = $('.cart:eq(' + cartIndex + ')');   
    alert($cart.index()); //returns -1
    $cart.find('.cartcontent').datagrid('loadData', data[cartIndex]);    

}

为什么在这里返回-1索引以及这个-1是什么意思?

3 个答案:

答案 0 :(得分:1)

-1表示在数组

中找不到该对象

答案 1 :(得分:1)

这意味着jQuery对象$cart不包含任何元素

.index()

  

如果找不到元素,.index()将返回-1。

答案 2 :(得分:0)

感谢大家帮助解决我无法想到的所有想法。

代码无法按预期工作的主要原因之一是由于在加载DOM之前调用了jquery / js脚本函数。这就是@Rory McCrossan首先评论的内容。我经历了搜索并降落在this article: Running Your Code at the Right Time

@AmmarCSE从我最早的帖子中实际上问我“所以你的意思是你有一个附加到.cart的点击处理程序,你想要加载表格吗?”

我不知道在jquery / javascript和整个web事物的上下文中是什么。然而,这对我有很多帮助,或许我需要一个eventlistener并进一步思考为什么我必须使用按钮点击事件以及pageload / domload如何不适合这种情况。

@Arun P Johny说明了在运行代码时是否存在元素的方法。

我把js代码执行到这里:

</body>

    <script>
        document.addEventListener("DOMContentLoaded", theDomHasLoaded, false);
        alert("haha DOM content is loaded");
        function theDomHasLoaded(e) {
            addAll(0, e);
        }
    </script>     
    <script type="text/javascript" src="cart_Test.js"> </script>

</html>

来自C#背景,相当舒适的VS IDE,具有很好的调试功能,我实现了调试jQuery,js代码相当繁琐。

由于这是将迁移框架从jsfiddle放到asp.net的测试,我尝试使用pageload,domload事件。但是在实际实现中,我想在按钮单击事件上加载这些购物车html表。到那时整个DOM无论如何被加载。我今天在这里学到了很多,谢谢你们。