jQuery过滤ID然后捕获匹配

Roh*_*ida 3 jquery pattern-matching css-selectors

我发现自己这样做了.

$jq("button").filter(function(){
    return this.id.match(/^user_(\d+)_edit$/);
}).click(function(){
    var matches = this.id.match(/^user_(\d+)_edit$/);
    var user_id = matches[1];

    alert('click on user edit button with ID ' + user_id);
});
Run Code Online (Sandbox Code Playgroud)

所以我想将click事件应用于某些按钮,并且在click事件处理程序中我需要用户ID.有没有办法可以避免第二场比赛?

$jq("button").filter(function(){
    return this.id.match(/^user_(\d+)_edit$/);
}).click(function(){
    var user_id = some_magic_variable;

    alert('click on user edit button with ID ' + user_id);
});
Run Code Online (Sandbox Code Playgroud)

谢谢.

Pao*_*ino 10

避开第一场比赛怎么样?

$jq("button[id^=user][id$=edit]").click(function() {

});
Run Code Online (Sandbox Code Playgroud)

将选择具有用户开头编辑结束的ID的所有按钮.

老实说,看看你的用例,简单地给所有用于编辑用户类的"edit_user"按钮然后只做:

$jq('button.edit_user').click(function() {

});
Run Code Online (Sandbox Code Playgroud)

它更清晰,更快速,并且jQuery方式可以获得所有符合类似用途的元素.

至于获取用户ID,在这个网站上有一些关于自定义属性的热烈讨论(自定义属性 - 是或不是?),我个人data-userid='5'在我的元素中做,然后只是var id = $(this).attr('data-userid');去获取ID.好,易于.但是,不会验证为XHTML.