确定,具体的HTML元素我需要什么可能听起来相当复杂,但在这里它是...隔离与jQuery
比方说,我们有以下的HTML代码(它仍然只是一个例子,但它的还是相当准确的):
<div data-role="content" comp-id="jqm-content-6207" id="jqm-content-6207" class="" data-theme="" >
<!-- New Navigation Bar #1 -->
<div data-role="navbar" data-position="fixed" comp-id="jqm-navbar-4603" id="jqm-navbar-4603" class="" data-iconpos="top" >
<ul>
<!-- New Navigation Bar Item #1 -->
<li>
<a href="#" comp-id="jqm-navbar-item-6671" id="jqm-navbar-item-6671" class="" data-icon="home" data-theme="" >
One
</a>
</li>
<!--/New Navigation Bar Item #1 -->
<!-- New Navigation Bar Item #2 -->
<li>
<a href="#" comp-id="jqm-navbar-item-4404" id="jqm-navbar-item-4404" class="" data-icon="gear" data-theme="" >
Two
</a>
</li>
<!--/New Navigation Bar Item #2 -->
</ul>
</div>
<!--/New Navigation Bar #1 -->
<!-- New Navigation Bar #2 -->
<div data-role="navbar" data-position="fixed" comp-id="jqm-navbar-4658" id="jqm-navbar-4658" class="" data-iconpos="top" >
<ul>
<!-- New Navigation Bar Item #2.1 -->
<li>
<a href="#" comp-id="jqm-navbar-item-5321" id="jqm-navbar-item-5321" class="" data-icon="home" data-theme="" >
One
</a>
</li>
<!--/New Navigation Bar Item #2.1 -->
<!-- New Navigation Bar Item #2.2 -->
<li>
<a href="#" comp-id="jqm-navbar-item-2843" id="jqm-navbar-item-2843" class="" data-icon="gear" data-theme="" >
Two
</a>
</li>
<!--/New Navigation Bar Item #2.2 -->
</ul>
</div>
</div>
第一关,其核心思想是:当用户点击与comp-id
属性设置项,然后添加msp-selected
班只是这个特定元素(和所有其他的删除元件)。
这是我如何处理这个特定部分:从HTML
function removeAll()
{
$("*").each(function() {
if ($(this)!==undefined) {
$(this).removeClass("msp-selected");
}
});
}
$(document).ready(function() {
$('[comp-id]').bind('click', function(event) {
removeAll();
$(event.target).addClass('msp-selected');
});
});
所以,你可能已经猜到它就像“选择”项的方式(通过点击)文件。
现在,这里的渔获:
我怎么可能让这个“选择”是进步?
我的意思是......
当在导航栏用户第一次点击:
- 检查第一
div
与comp-id
选择(具有类msp-selected
)。如果没有,请选择它。 - 如果已经选择了第一个
div
,那么请进一步深入查找comp-id
,然后选择一个。
因此,任何想法?
你会怎么做?
P.S.当点击导航项目的<a>
时,哪个特定项目接收到该事件? 是<div data-role=\"navbar\">
还是导航栏项?无论如何,从所有这些项目中,我想选择最外层 - 目前未选中。下一次,当用户再次点击并且例如导航栏已选中,然后取消选择它并选择它的子项(更深入)。
编辑:
当尝试:
$(document).ready(function() {
$('[comp-id]:not(.msp-selected)').on('click', function(e) {
removeAll();
$(this).addClass('msp-selected');
});
});
在导航栏项目,当点击什么,我得到的是:
Selected Div : jqm-navbar-item-8421
Selected Div : jqm-navbar-8598
Selected Div : jqm-content-2860
Selected Div : jqm-page-3363
所以,基本上它只是“选择”最外层的容器。这是错误的...下一次用户点击,内容应该选择 - 然后导航栏,然后navbar项....
这里的最终目标是什么?你正在向我们解释你是如何尝试做的事情,但我确定有更好的方法来做到这一点,你想在点击时用'msp-selected'类标记链接和父div? –
@koala_dev不,我想选择**“外部”最未选择的元素**(使用'comp-id'设置)。然后选择下一个(更深层次)未选定的元素。等等。随时只能选择一个项目... :-) –
@koala_dev请看看我的“P.S.”。在最初的问题......我希望这对我正在尝试做的事很有帮助。 :-) –