如何从类选择器获取Id

时间:2014-08-29 11:33:36

标签: javascript jquery html

<input  id="1" class="Find">
<input  id="2" class="Find">
<input  id="3" class="Find">

$('.Find').autocomplete('auto/data.php?mode='+ $('.Find').attr('id')  +'', {    
                    width: 220,
                    max: 5,
                    selectFirst: false,      
                    mustMatch:true,
                    formatItem: function(data, i, n, value) {return  value.split("|")[0];}
                    });

在这种情况下,代码$('.Find').attr('id')仅显示第一个数组。没有显示我需要的特定ID。

我已完成更改新变种n,使用新变量更改此行$('.Find').attr('id'),但结果为undefined

新的var看起来像这个var one = $("#GetObjc").attr("value");

任何人都可以帮助我。我该怎么做才能获得该类的特定ID。对不起,如果混淆cozz am newbie。

6 个答案:

答案 0 :(得分:1)

我不确定你在找什么。但您可以使用.each获取所有id

var ids ='';
$(".Find").each(function( index, value ) {
  ids += $(this).attr('id') + ',';
});

然后你可以拆分ids变量或类似的东西。

<强> Check JSFiddle Demo

在您的情况下,我认为它对您有用:

$('.Find').each(function() {
    var $this = $(this);
    $this.autocomplete('auto/data.php?mode='+ $this.attr('id')  + '', {    
        width: 220,
        mzx: 5,
        selectFirst: false,      
        mustMatch:true,
        formatItem: function(data, i, n, value) {return  value.split("|")[0];}
    });
});

答案 1 :(得分:1)

2%的几率我以正确的方式理解你的问题,但似乎你需要遍历元素列表:

    $('.Find').each(function() {
        $(this).autocomplete('auto/data.php?mode='+ $(this).attr('id')  +'', {
            width: 220,
            max: 5,
            selectFirst: false,      
            mustMatch:true,
            formatItem: function(data, i, n, value) {return  value.split("|")[0];}
        });
    });

答案 2 :(得分:1)

我想你想这样做:

$('.Find').each(function() {
    var $this = $(this);
    $this.autocomplete('auto/data.php?mode='+ $this.attr('id')  + '', {    
        width: 220,
        mzx: 5,
        selectFirst: false,      
        mustMatch:true,
        formatItem: function(data, i, n, value) {return  value.split("|")[0];}
    });
});

$('.Find').attr('id')将始终返回页面中第一个.Find的ID。所以你不能这样使用它。

答案 3 :(得分:1)

$('.Find')返回一个包含所有DOM元素的数组(包含在jquery中),它们有一个'Find'类。

您可以使用[]运算符访问每个元素 - 例如$('.Find')[0],或者使用for lop迭代数组。要获取元素的id,请使用id属性。

总结 - $('.Find')[0].id - 第一个元素的ID

答案 4 :(得分:1)

我不确定我是否得到了你想要的东西,但我想你想根据输入自动完成所有输入和来自不同网址的数据,如果是这样你可以这样做:

$('.Find').each(function(){
  $(this).autocomplete('auto/data.php?mode='+ $(this).attr('id')  +'', {    
                width: 220,
                max: 5,
                selectFirst: false,      
                mustMatch:true,
                formatItem: function(data, i, n, value) {return  value.split("|")[0];}
  });
})

获取id,在每个中只做:

$(this).attr('id') or $(this).prop('id')

答案 5 :(得分:1)

要获得动态数据源,您需要设置function()作为源。

此外,this属性不返回实际的DOM元素,而不是(当然)包含实际elemet的更丰富的对象。

因此,要实现您的目标,您可以尝试以下方法:

$('.Find').autocomplete({    
    source: function(request, response) {
        var id = this.element[0].id;
        var url = 'auto/data.php?mode='+ id;
        jQuery.getJSON(url, response).error(function () { /* handle JSON error */ }); 
    },
    width: 220,
    max: 5,
    selectFirst: false,      
    mustMatch:true,
    formatItem: function(data, i, n, value) {return  value.split("|")[0];}
});