JQuery针对同一个类中的许多元素

时间:2014-05-08 13:48:14

标签: javascript jquery html css

如何从具有相同类或其他属性的众多元素中单独定位元素。我不能在每个元素上添加不同的类,所以我需要在我工作时定位每个元素。 到目前为止,我已经尝试了这一点,但它使用input:text定位所有元素,因为我错误地将每个单独元素作为目标。

var selector = $('input:radio').prop("checked", true);
var element = $ ('input:text');

$(selector).on('change', function( event ) {
if(this){
    $(element).prop('disabled', true);
     alert('disable only this element when radio is selected');
}
else{ 
    alert('others input:text not disabled');
    $('input:text').prop("disabled", false);
}
})

Fiddle:

5 个答案:

答案 0 :(得分:3)

通过使用DOM导航方法,您可以非常轻松地完成。只需使用:

var selector = $('input:radio').prop("checked", true);
var element = $ ('input:text');

$(selector).on('change', function( event ) {
    var el = $(this).closest('.input-group').find('input:text');
    element.prop('disabled', function(){
        return !el.is(this);
    })
});

小提琴:http://jsfiddle.net/D2RLR/5874/

对于动态输入,您需要使用事件委派(阅读更多here):

//document should be closest static element
$(document).on('change', 'input:radio', function(){
    var el = $(this).closest('.input-group').find('input:text');
    $('input:text').prop('disabled', function(){
        return !el.is(this);
    })
})

答案 1 :(得分:1)

为什么不简化?

Demo Fiddle

$('input:radio').on('change', function (event) {
    $('input[type=text]').prop('disabled', false);
    $(this).parent().next('input[type=text]').prop('disabled', 'false');        
})

答案 2 :(得分:1)

我并不完全明白您尝试做什么,但您可以使用$(this)来定位触发事件的元素,而不是尝试使用选择器。

我觉得这样的事情就是你想要的:

$(selector).on('change', function( event ) {
    $("input:text").prop("disabled", true);
    $(this).parent().siblings("input:text").prop("disabled", false);
})

它禁用所有输入:文本,然后启用其单选按钮被选中的文本。

答案 3 :(得分:1)

试试这个:

$(selector).on('change', function( event ) {
    $('input:text').prop("disabled", false);
    $(this).closest('.input-group').find(element).prop('disabled', true);

})

http://jsfiddle.net/D2RLR/5869/

答案 4 :(得分:1)

正如其他人所说,你不清楚自己要做什么,或者你的问题有多普遍。如果与您的选择器匹配的元素具有完全相同的属性(包括类),您可能需要基于它们所嵌入的上下文,或者作为最后一个资源,您可能能够基于这些元素的顺序。

  • 背景信息:如果您正在寻找" p.many_like_me" ,你知道你想要匹配的元素是在#parent_id中,你只需要将你的选择器精炼为" #parent_id p.many_like_me"

  • 订单:如果您知道您正在寻找与您的选择器匹配的DOM上的第三个元素,您可以使用get()来选择它:$(" p.many_like_me" ).get(2)(get取一个从零开始的索引)。

如果您需要根据附近或某种相关元素触发的事件选择它们,那么此处给出的其他一些答案都可以。