我有以下HTML
<button class="c1 c2 user-1"></button>
<button class="c1 c2 user-2"></button>
<button class="c1 c2 user-3"></button>
我知道点击了哪个按钮,如何从中获取user-#
课程?
答案 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>