jQuery从多个选择器获取类选择器名称

时间:2018-10-20 08:43:27

标签: javascript jquery

如何从多个选择器中获取被点击的选择器类?

<div class="login ab xy yz">Login</div>
<div class="register po rt">Register</div>
<div class="lostpw ad op">Lost Password</div>

<script type="text/javascript">
    $(document).on('click','.login , .register , .lostpw',function(){
        var class_selected = 'login' /* way to find which class selector is clicked , suppose "login"*/
        openForm(class_selected);
    })
</script>

我正在图书馆工作,所以我必须考虑所有情况。
1)班级可以任意顺序。
2)不能使用通用类。

Duplicate question是针对单个班级的,因此,大多数答案是我所知道的$(this).attr('class')

2 个答案:

答案 0 :(得分:0)

您可以使用一个通用类,然后使用hasclass jquery方法

$(document).on('click', '.home', function() {
  if ($(this).hasClass('login')) {
    console.log('login')
  } else if ($(this).hasClass('register')) {
    console.log('register')
  } else if ($(this).hasClass('iflostpw')) {
    console.log('iflostpw')
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="home login ab xy yz">Login</div>
<div class="home register po rt">Register</div>
<div class="home iflostpw ad op">Lost Password</div>

答案 1 :(得分:0)

您可以创建一个选择器数组,将它们传递给事件处理程序,然后在内部使用它们来确定单击了哪个:

var selectors = [
  '.login',
  '.register',
  '.lostpw'
];

$( document ).on( 'click', selectors.join( ',' ), function( evt ) {

  var $this = $( this );

  var clicked = $.grep( selectors, function( selector ) {
    return $this.is( selector );
  } ).shift();

  console.log( clicked ); // .substr(1) to remove the leading .

} );

Here's a fiddle