jquery如何通过name来find多个元素

我是通过以下的代码来通过name找取多个元素的

$("#info").find("input[name='Company'],input[name='Attribute'],input[name='Code']").attr("disabled", "disabled");

这样的确可以实现功能,但是写起来太复杂了,不知道有没有简单的写法呢?

阅读 25.7k
5 个回答

封装一下嘛

function getByName( $parent, name ) {
    if ( !Array.isArray( name ) ) name = [ name ];
    var selector = name.map( function( item ){
        return 'input[name="' + item + '"]';
    } );
    return $parent.find( selector.join( ',' ) )
}

getByName( $("#info"), [ 'Company', 'Attribute', 'Code' ] )
    .attr("disabled", "disabled");

document.getElementsByName('xx');

给这些同一个class名字,直接$(".className').attr(),不更简单?

可能可以看具体情况吗,以及你的DOM结构?
如果你的#info元素内只有么几个input,或是这些input有统一的class或是某种特定的统一属性,可以通过class或是属性去统一获取。

既然不一样,为什么放在一起。

既然一样,为什么不放在一起。

如果都是有相同特性的话,建议用一个统一的标识。(以上纯属吐槽,无他意)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题