jQuery / Bootstrap 3 - 点击

时间:2016-07-08 13:36:46

标签: javascript jquery

我试图根据下一个<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并向后。

2 个答案:

答案 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');
 })

Updated Fiddle

答案 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');
});