Jquery index() 找不到我的元素
Jquery index() doesn't find my element
今天我对jQuery .index()函数有一个小问题。我有一个拥有primaryContract类的div列表。其中div 也包含选定的类。我想接收此选定元素的索引。我尝试了很多操作,但没有任何效果,该函数仅返回 -1(这是该函数的失败返回值)。
以下是相关HTML的部分:
<div class="owl-carousel owl-loaded" rv-slide="context:stepHide" style="display: block;">
<!-- rivets: each-contract -->
<div class="owl-stage-outer">
<div class="owl-stage" style="transition: 0s; width: 654px; transform: translate3d(218px, 0px, 0px);">
<div class="owl-item active center" style="width: 109px;">
<div class="primaryContract" rv-text="contract:primaryContractReference" rv-value="contract:primaryContractReference" rv-addclass="context:primaryContract | eq contract:primaryContractReference | if 'selected'">243992</div>
</div>
<div class="owl-item active" style="width: 109px;">
<div class="primaryContract selected" rv-text="contract:primaryContractReference" rv-value="contract:primaryContractReference" rv-addclass="context:primaryContract | eq contract:primaryContractReference | if 'selected'">444444</div>
</div>
<div class="owl-item active" style="width: 109px;">
<div class="primaryContract" rv-text="contract:primaryContractReference" rv-value="contract:primaryContractReference" rv-addclass="context:primaryContract | eq contract:primaryContractReference | if 'selected'">665441</div>
</div>
<div class="owl-item" style="width: 109px;">
<div class="primaryContract" rv-text="contract:primaryContractReference" rv-value="contract:primaryContractReference" rv-addclass="context:primaryContract | eq contract:primaryContractReference | if 'selected'">243992</div>
</div>
<div class="owl-item" style="width: 109px;">
<div class="primaryContract selected" rv-text="contract:primaryContractReference" rv-value="contract:primaryContractReference" rv-addclass="context:primaryContract | eq contract:primaryContractReference | if 'selected'">444444</div>
</div>
<div class="owl-item" style="width: 109px;">
<div class="primaryContract" rv-text="contract:primaryContractReference" rv-value="contract:primaryContractReference" rv-addclass="context:primaryContract | eq contract:primaryContractReference | if 'selected'">665441</div>
</div>
</div>
</div>
</div>
这是我关心的JS:
initializeSelectedCarouselItem:function(){
var items = $("div.primaryContract");
var index = items.index('.selected');
console.log(index);
有人看到我在哪里犯了错误吗?
它
不起作用的原因
你试图传递一个类.selected
,而index()
期待一个对象或DOM元素。
如果在元素集合上调用 .index() 并传入 DOM 元素或 jQuery 对象,则 .index() 返回一个整数,指示传递的元素相对于原始集合的位置。 如果选择器字符串作为参数传递,.index() 返回一个整数,指示 jQuery 对象中第一个元素相对于选择器匹配的元素的位置。如果未找到该元素,.index() 将返回 -1。
所做的更改
var selector = $('.selected')
var index = items.index(selector);
工作演示
var items = $("div.primaryContract");
var selector = $('.selected')
var index = items.index(selector);
alert(index);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="owl-carousel owl-loaded" rv-slide="context:stepHide" style="display: block;">
<!-- rivets: each-contract -->
<div class="owl-stage-outer">
<div class="owl-stage" style="transition: 0s; width: 654px; transform: translate3d(218px, 0px, 0px);">
<div class="owl-item active center" style="width: 109px;">
<div class="primaryContract" rv-text="contract:primaryContractReference" rv-value="contract:primaryContractReference" rv-addclass="context:primaryContract | eq contract:primaryContractReference | if 'selected'">243992</div>
</div>
<div class="owl-item active" style="width: 109px;">
<div class="primaryContract selected" rv-text="contract:primaryContractReference" rv-value="contract:primaryContractReference" rv-addclass="context:primaryContract | eq contract:primaryContractReference | if 'selected'">444444</div>
</div>
<div class="owl-item active" style="width: 109px;">
<div class="primaryContract" rv-text="contract:primaryContractReference" rv-value="contract:primaryContractReference" rv-addclass="context:primaryContract | eq contract:primaryContractReference | if 'selected'">665441</div>
</div>
<div class="owl-item" style="width: 109px;">
<div class="primaryContract" rv-text="contract:primaryContractReference" rv-value="contract:primaryContractReference" rv-addclass="context:primaryContract | eq contract:primaryContractReference | if 'selected'">243992</div>
</div>
<div class="owl-item" style="width: 109px;">
<div class="primaryContract selected" rv-text="contract:primaryContractReference" rv-value="contract:primaryContractReference" rv-addclass="context:primaryContract | eq contract:primaryContractReference | if 'selected'">444444</div>
</div>
<div class="owl-item" style="width: 109px;">
<div class="primaryContract" rv-text="contract:primaryContractReference" rv-value="contract:primaryContractReference" rv-addclass="context:primaryContract | eq contract:primaryContractReference | if 'selected'">665441</div>
</div>
</div>
</div>
</div>
jQuery index()
将仅从其父级返回子项的索引,而不从祖父级返回。因此,您已将其父级用作子项以使用祖父级作为父项
initializeSelectedCarouselItem:function(){
var index = $(".primaryContract.selected").parent().index();
console.log(index);
}
你应该得到父索引,因为primaryContract是父div的唯一子级
运行此代码
var index = $(".primaryContract.selected").parent().index();
或
var indexes=[];
$(".primaryContract.selected").each(function(){
indexes.push($(this).parent(".owl-item").index());
});
alert(indexes);
相关文章:
- 为什么当我分配给element.style时,我的元素的样式没有改变
- 火虫找到隐藏我的元素的脚本
- 为什么动画完成后我的元素不再隐藏
- 如何使用“;点击“;在创建我的元素之前
- Javascript似乎并没有取消隐藏我的元素
- 如何知道我的元素是否溢出
- Jquery index() 找不到我的元素
- 语义 UI 模态导致我的元素在关闭后从 DOM 中消失
- appendTo 不会将我的元素放在我想要的位置
- JQuery可以'找不到我的元素.为什么?
- 为什么未能将transform:none应用于我的元素
- 为什么我不能将ng-click附加到我的元素
- Vue.js:为什么我的v-else指令会导致我的元素被多次渲染
- 为什么我的
- 元素上的颜色属性没有改变我的 .hover() 事件处理程序
- 如何使我的元素在Javascript中的显示属性发生更改时淡入淡出
- 为什么`document.getElementById(“#datepicker1”)`找不到我的元素
- jQuery$(this)不会在我的元素中插入文本
- 为什么我的元素只显示/隐藏当信用卡被选中
- 我的元素上哪个jquery附加事件首先触发
- 为什么我的元素在页面加载时大小不正确?