我试图根据下一个<ul>
兄弟的前缀来预设一个范围&#34;崩溃&#34;或者&#34;崩溃&#34;。
如果兄弟<a>
有任何类,我已经可以将我需要的范围放在上一个<ul>
中。
但是现在我需要在点击<a>
以展开<ul>
时更改范围。
为了更好地理解,这里有一个jsfiddle:https://jsfiddle.net/qtrhu249/2/
HTML:
<div class="treeview">
<ul class="level1">
<li>
<a data-toggle="collapse" href=".options1">
Item 1
</a>
<ul class="collapse options1">
<li>
<a data-toggle="collapse" href=".sublevel1"></a>
<input type="checkbox" value="option1" />
<a data-toggle="collapse" href=".sublevel1">Item 1-1</a>
<ul class="collapse sublevel1">
<li>
Item 1-1-1
<ul>
<li><input type="checkbox" value="option1" />
Item 1-1-1-1
</li>
<li><a data-toggle="collapse" href=".collapse1-1-1-1-1"></a>
<input type="checkbox" value="option1" />
<a data-toggle="collapse" href=".collapse1-1-1-1-1">Item 1-1-1-2</a>
<ul class="collapse collapse1-1-1-1-1">
<li>Item 1-1-1-2-1
<ul>
<li><input type="checkbox" value="option1" />Item 1-1-1-2-1-1</li>
<li><a data-toggle="collapse" href=".collapse1-1-1-1-1-1-1"></a><input type="checkbox" value="option1" />
<a data-toggle="collapse" href=".collapse1-1-1-1-1-1-1">Item 1-1-1-2-1-2</a>
<ul class="collapse collapse1-1-1-1-1-1-1">
<li>Item 1-1-1-2-1-2-1
<ul>
<li><input type="checkbox" value="option1" />Item 1-1-1-2-1-2-1-1</li>
<li><input type="checkbox" value="option1" />Item 1-1-1-2-1-2-1-2</li>
<li><input type="checkbox" value="option1" />Item 1-1-1-2-1-2-1-3</li>
<li><input type="checkbox" value="option1" />Item 1-1-1-2-1-2-1-4</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><input type="checkbox" value="option1" />Item 1-2</li>
<li><input type="checkbox" value="option1" />Item 1-3</li>
<li><input type="checkbox" value="option1" />Item 1-4</li>
</ul>
</li>
</ul>
</div>
JQUERY:
$('.treeview ul').not('ul:not([class])').each(function() {
$(this).find("a").first().prepend("<span>XYZ</span>");
})
目标:
单击时XYZ
的元素,更改为ZYX
并向后。
答案 0 :(得分:0)
您可以使用html()
更改范围的文字。试试这个:
//Function on click a elements with data-toggle
$('a[data-toggle]').on('click',function(){
//Target the span inside the clicked a
var sp = $('span',this)
//Toggle the Text
sp.html() == "XYZ" ? sp.html('ZYX') : sp.html('XYZ');
})
答案 1 :(得分:-1)
我不知道我是否完全理解您的问题,但我对您的JavaScript
代码进行了一些更改。见下文:
$('.treeview ul').not('ul:not([class])').each(function() {
$(this).find("a").first().prepend("<span>XYZ</span>");
});
$('a[data-toggle]').on('click',function(){
var sp = $('span', this);
if (!sp[0])
sp = $('span', $(this).prevAll('a'));
sp.html() == "XYZ" ? sp.html('ZYX') : sp.html('XYZ');
});