var playerClass = $(this).parent().attr('class')
关于只从dom选择特定类的问题。
我可以添加到这一行,只选择具有player-1类,player-2类的类,基本上是前缀为player的后面跟数字的任何东西?
解决方法
我无法确切地说出你在问的问题,所以这里有四种可能性。希望其中一个匹配您打算要求的,或者您可以稍微修改其中一个以适应。
要选择所有输入项,其中xx是一个数字,你可以这样做:
var playerClass = $('input[class^="player-"]').filter(function() { return((" " + this.className + " ").match(/\splayer-\d+\s/) != null); });
第一个jQuery选择器获取以“player-”开头的任何类名。过滤器然后消除任何不是“player-nn”的项目。
如果你只是想检查一个特定的类名是否包含player-nn,那么你可以这样做:
if ((" " + $(this).parent().attr('class') + " ").match(/\splayer-\d+\s/) != null) { // the parent has player-nn as a class }
如果您只想在父项上获得匹配的类,可以使用以下方法:
var matches = (" " + $(this).parent().attr('class') + " ").match(/\s(player-\d+)\s/); if (matches) { playerClass = matches[1]; }
如果你想在播放器之后真正获得数字,你可以这样做:
var matches = (" " + $(this).parent().attr('class') + " ").match(/\splayer-(\d+)\s/); if (matches) { playerNum = parseInt(matches[1],10); }
注意:所有这些例子都使用了一个技巧(我从jQuery中学到),如果在整个类名的开头和结尾添加一个空格,那么可以通过查找特定的类名环绕双方都有空白。这确保您不匹配较长类名的一部分,并且仅匹配整个类名。 jQuery在它的.hasClass()实现中使用这个技巧。