如何通过值找到输入元素的ID?

4

基于输入元素的值,如何获取其id?这些值将始终是唯一的,只有七个。我尝试过以下方法:

$('#wrapper').find("input[value='"+value+"']").each(function(){
    return this.id;
});

但是没有返回任何内容!

5个回答

7

尝试使用 this.id,不需要为 ID 创建 jQuery 对象。

$(this).attr('id')

HTH

EDIT: This might work:

$('#wrapper').find("input[value='"+value+"']").attr('id');

是的,你说得对,我已经更新了我的答案以反映这一点。谢谢。 - DannyLane
既然你已经纠正了它,那么它就不会有问题了,但是错误的未经测试/信息=踩,对吧? - meo
这很公平,虽然答案包含了正确的信息,但其中一个选项是错误的。 - DannyLane

4

你写了return this.id;... 返回到哪里?你仅仅从匿名函数中返回值,我没有看到你在哪里尝试使用它。所以答案是:

var idYouAreSearchingFor = $('#wrapper').find("input[value='"+value+"']").attr('id');

3

你的代码基本上很不错:

$('#wrapper').find("input[value='"+value+"']").each(function(){
        return  $(this).attr("id") 
});

在这里检查: http://jsfiddle.net/5xsZt/

编辑:我刚刚使用this.id进行了测试,它也可以。你的代码是正确的。你的错误可能出现在其他地方,请仔细检查: http://jsfiddle.net/5xsZt/3/


1

你可以使用过滤器来解决这个问题。像这样:

$('#wrapper input').filter(function() {
    return $(this).val() == value;
}).each(function() {
    return this.id;
});

1

这是一个在所有主流浏览器中绝对可行的版本:

function getInputWithValue(wrapper, value) {
    var inputs = wrapper.getElementsByTagName("input");
    var i = inputs.length;
    while (i--) {
        if (inputs[i].value === value) {
            return inputs[i];
        }
    }
    return null;
}

var wrapper = document.getElementById("wrapper");
var input = getInputWithValue(wrapper, "some value");
window.alert(input.id);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接