如何使用元素's属性值,以针对jQuery中具有相同属性值的另一个元素
How to use an element's attribute value to target another element with an identical attribute value in jQuery?
我有一个包含文章名称列表list-A
和相应的文章内容列表list-B
的菜单。每个列表A和列表B项对在它们的类(例如class="orderCntrl-6062347"
)中共享相同的值。
我希望能够从列表A中选择一个项目,将列表B中相应的文章放在列表B的顶部。
我知道如何通过使用以下方法将所选项目放在列表的顶部来重新排序列表:
$("li.orderIt").click(function() {
$(this).parent().prepend($(this));
});
这就是我的代码目前的样子:
<!-- List A selecting an item here should bring selected item and paired item in list B to the top of each of their lists -->
<ul class="list-A">
<li class="orderIt orderCntrl-6062347"><a>Item 1</a></li>
<li class="orderIt orderCntrl-6062348"><a>Item 2</a></li>
<li class="orderIt orderCntrl-6062349"><a>Item 3<a></li>
</ul>
<ul class="list-B">
<li class="orderCntrl-6062347"><h2 class="newsTitle">Item One</h2></li>
<li class="orderCntrl-6062348"><h2 class="newsTitle">Item Two</h2></li>
<li class="orderCntrl-6062349"><h2 class="newsTitle">Item Three</h2></li>
</ul>
<!-- Script to bring accompanying article to top of list on selecting side menu - currently only bring elements in List A to the top of their lists -->
<script>
$("li.orderIt").click(function() {
$(this).parent().prepend($(this));
});
</script>
这里有一个链接,内容看起来会是什么样子,绿边菜单是list-A
(它可能在屏幕上1300像素以下的页面标题上方)。
如何调整脚本,使相应的列表B项目也位于顶部
这就是你想要的吗?
https://jsfiddle.net/stevenkaspar/61oL0Lfm/
<ul class="list-A">
<li class="orderCntrl-6062347" data-news-target='#news1'><h2 class="newsTitle">Item One</h2></li>
...
<!-- List B -->
<ul class="list-B">
<li id='news1'>NEWS One</li>
<script>
$("[data-news-target]").click(function() {
$(this).parent().prepend($(this));
var target_element = $( $(this).data('newsTarget') );
target_element.parent().prepend( target_element );
});
</script>
您可以使用数据新闻目标来说明它将移动的元素
工作JSFiddle示例
你需要做的是:
-
获取要用于与article元素匹配的唯一名称。
-
使用它可以找到要移动到顶部的文章元素。
-
将article元素移到顶部。
建议:
-
将唯一名称设置为菜单项上的ID。它会更容易获得和更干净(无论如何,id都应该是唯一的)。
-
使用
.on("click", function() { ... })
而不是.click(function() { ... })
,原因有很多。
现在,单击需要使用this.id
查找this
的id
。然后,您需要向其中添加一个.
,并使用符号$()
将元素作为对象获取。然后按照你以前的方式做准备。
HTML示例:
<ul class="List-A">
<li class="orderIt" id="unique-name-1">Item 1</li>
<li class="orderIt" id="unique-name-2">Item 2</li>
<li class="orderIt" id="unique-name-3">Item 3</li>
</ul>
<ul class="List-B">
<li class="unique-name-1">Article 1</li>
<li class="unique-name-2">Article 2</li>
<li class="unique-name-3">Article 3</li>
</ul>
jQuery示例
$(".List-A").on("click", ".orderIt", function() {
$(this).parent().prepend($(this));
target_article = $('.' + this.id)
target_article.parent().prepend(target_article)
});
它可以简化为:
$(".List-A").on("click", ".orderIt", function() {
$(this).parent().prepend($(this));
$('.' + this.id).parent().prepend($('.' + this.id));
});
但它的可读性要差得多,这将使你在6个月后忘记自己做了什么时更耗时地弄清楚发生了什么。
相关文章:
- 锚点元素的href属性自动更改
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 通过id和class属性获取元素
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 如何正确引用传递到淘汰中的当前元素的属性.JS
- javascript来显示元素属性
- 自定义HTML元素属性未显示-Web组件
- 如何使用element.myobj.prop等具有对象属性的元素
- 将特定属性动态添加到元素中
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- 为什么样式属性不适用于使用DOMParser创建的元素
- .querySelectorAll如何只获取具有所有属性的元素
- 如何使用jQuery按数据日期属性选择元素
- 使用数据属性将HTML数据复制到另一个元素
- JQuery:使用clone()生成的元素不采用原始的事件属性
- 价格滑动过滤器-隐藏父属性元素
- 未捕获的类型错误:不能读取属性'元素不存在
- 将信息存储在变量与数据属性元素中
- 添加HTML5 DATA属性元素存储在Javascript变量