处理bootstrap list-group click

时间:2016-01-04 11:58:51

标签: javascript twitter-bootstrap

我坚持使用html / JS并且不知道我应该如何处理某些事件。 例如,我有一个列表组:

<div class="col-lg-3 col-md-3 col-sm-3 opciones">
   <div class="list-group">
      <a href="#" class="list-group-item active">
        Tokyo 
      </a>  // barfoobarfoo
      <a href="#" class="list-group-item">London</a> // foo
      <a href="#" class="list-group-item">Paris</a>  // bar
      <a href="#" class="list-group-item">Moscow</a>  // foobar
      <a href="#" class="list-group-item">NY</a>   //foobarfoo
    </div>
</div>

我想做的是:

1)点击时更改活动元素。

2)单击元素时调用JS函数。 UPD: 所以现在我知道点击事件可以用JQuery来处理。

我无法理解的是如何确定单击哪个元素。例如JQuery:

$('.list-group-item').on('click', function() {
    $this = $(this);

    $('.active').removeClass('active');
    $this.toggleClass('active')

   function simpleFunc(someargument) { //value of this argument depends on clicked item and can be (foo|bar|foobar ) etc
       document.write(someargument) // here whould be written some text (foo|bar|foobar ) etc
})

除了此HTML代码之外,没有任何教程或任何内容。 感谢

3 个答案:

答案 0 :(得分:3)

你可以简单地使用jQuery。

例如:

String

Alias将被捕获:

$('.list-group-item').on('click', function() {
    var $this = $(this);
    var $alias = $this.data('alias');

    $('.active').removeClass('active');
    $this.toggleClass('active')

    // Pass clicked link element to another function
    myfunction($this, $alias)
})

function myfunction($this,  $alias) {
    console.log($this.text());  // Will log Paris | France | etc...

    console.log($alias);  // Will output whatever is in data-alias=""
}

答案 1 :(得分:2)

这是动态jQuery代码

$(document).ready(function() {
  $(".list-group-item").live('click', function(){ 
    $('.active').removeClass('active');
    $(this).addClass('active');
    console.log($(this).html()); 
    // Code here whatever you want or you can call other function here
  });
});

这会对你有所帮助。享受!

答案 2 :(得分:0)

您可以尝试这样的事情:

&#13;
&#13;
function notify(el) {
  resetElements();
  console.log(el.innerHTML);
  el.classList.add('active');
}

function resetElements() {
  // Get all elements with "active" class
  var els = document.getElementsByClassName("active");

  // Loop over Elements to remove active class;
  for (var i = 0; i < els.length; i++) {
    els[i].classList.remove('active')
  }
}
&#13;
.active {
  font-weight: bold;
}
&#13;
<div class="col-lg-3 col-md-3 col-sm-3 opciones">
  <div class="list-group">
    <a href="#" onclick="notify(this)" class="list-group-item active">
        Tokyo
      </a>
    <a href="#" onclick="notify(this)" class="list-group-item">London</a>
    <a href="#" onclick="notify(this)" class="list-group-item">Paris</a>
    <a href="#" onclick="notify(this)" class="list-group-item">Moscow</a>
    <a href="#" onclick="notify(this)" class="list-group-item">NY</a>
  </div>
</div>
&#13;
&#13;
&#13;