Javascript 类^='instructions'…仅选择以类开头的第一个元素应选择全部

Javascript 类^='instructions'…仅选择以类开头的第一个元素应选择全部,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,这个代码块有什么问题?它将只选择包含指令的第一个元素,但不会选择所有指令。为什么?我错过了什么 jQuery(document).ready(function () { jQuery('select').select2(); // get a list of objects that begin with instructions var classList = jQuery('a[class^="instructions"]').attr('class').spl

这个代码块有什么问题?它将只选择包含指令的第一个元素,但不会选择所有指令。为什么?我错过了什么

jQuery(document).ready(function () {

    jQuery('select').select2();

    // get a list of objects that begin with instructions
    var classList =  jQuery('a[class^="instructions"]').attr('class').split(/\s+/);
    console.log(classList);
    jQuery.each(classList, function (index, item) {
        jQuery('.'+item+'-'+index).click(
            function (event) {
                event.preventDefault();
                jQuery(this).parent().next().toggle();
            }
        );
    });
});
attr用作getter时只能从一个元素返回值,并且将始终从集合中的第一个元素返回

您需要为所有元素映射自己的数组,例如:

var classList =  jQuery('a[class^="instructions"]').map(function(){
  return $(this).attr('class');
}).get();

当元素有多个类时,您不能保证类以特定字符串开头。顺便说一句,类列表已经有一个属性-无需自定义拆分。对于这类事情,最好使用数据属性,这样可以控制和依赖顺序。您如何知道元素未被选中?您是否尝试记录jQuery'a[class^=instructions]的结果?或者您说代码没有选择多个元素,因为代码的其余部分不工作?这是charlietfl解释的attr getter a s