jQuery得到以类开头的类

时间:2017-08-31 08:50:22

标签: jquery html css jquery-selectors

我有以下HTML

<button class="c1 c2 user-1"></button>
<button class="c1 c2 user-2"></button>
<button class="c1 c2 user-3"></button>

我知道点击了哪个按钮,如何从中获取user-#课程?

5 个答案:

答案 0 :(得分:2)

一种方法是使用正则表达式来拉开class属性值,如下所示:

$('button').click(function() {
  var classes = $(this).attr('class');
  var userClass = classes.match(/user\-\d+/gi)[0];
  console.log(userClass);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="c1 c2 user-1"></button>
<button class="c1 c2 user-2"></button>
<button class="c1 c2 user-3"></button>
<button class="c1 c2 user-111 foo1"></button>

但是,更具可扩展性,灵活性和可靠性的解决方案是将user-X值存储在元素的data属性中:

$('button').click(function() {
  var user = $(this).data('user');
  console.log(user);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="c1 c2" data-user="user-1"></button>
<button class="c1 c2" data-user="user-2"></button>
<button class="c1 c2" data-user="user-3"></button>

答案 1 :(得分:1)

假设课程与OP中的类似

你可以让attr类使用空格分割它然后弹出获取你想要的类的最后一个元素

$("button").click(function() {

  var thisclass = $(this).attr("class")

  alert(thisclass.split(" ").pop())

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="c1 c2 user-1">1</button>
<button class="c1 c2 user-2">2</button>
<button class="c1 c2 user-3">3</button>

答案 2 :(得分:0)

这应该有效:

function getUser(list) {
  
  return list
    .reduce((res, classname) => {
      const re = /user-(\w+)$/;
      const user = re.exec(classname);
      if(user) {
        res.push(user[1]);
      }
      
      return res;
    }, [])
  ;
}

function onButtonsClick(event) {
  const classes = Array.from(event.target.classList);
  
  console.log(getUser(classes));
}

Array
  .prototype
  .forEach
  .call(document.querySelectorAll('button'), element => {
    element.addEventListener('click', onButtonsClick);
  })
;
<button class="c1 c2 user-1">User 1</button>
<button class="c1 c2 user-2">User 2</button>
<button class="c1 c2 user-3">User 3</button>

答案 3 :(得分:0)

您可以使用解决方案

$('button').click(function(){
  var allClass = $(this).attr('class').split(' ');
  console.log(allClass[allClass.length - 1]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="c1 c2 user-1"></button>
<button class="c1 c2 user-2"></button>
<button class="c1 c2 user-3"></button>

使用.attr('class');获取所点击按钮的所有课程。 然后在空间的基础上拆分它并从数组中获取最后一个元素。

希望这会对你有所帮助。

答案 4 :(得分:0)

您可以获取已点击的class属性并使用正则表达式:

.replace(/.*(user-\d+).*/g,'$1')

从中获取用户 - # - 请参阅下面的演示:

$('button').click(function(){
  console.log($(this).attr('class').replace(/.*(user-\d+).*/g,'$1'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="c1 c2 user-1">one</button>
<button class="c1 c2 user-2">two</button>
<button class="c1 c2 user-3">three</button>
<button class="user-45 c1 c2">four</button>