document.getElementById(“id”)有效,但$(“#id”)不是jQuery

时间:2012-03-13 19:26:26

标签: javascript jquery

我正在迭代某些元素,我发现document.getElementById("id")有效,但$("#id")没有。为什么呢?

编辑:我想发布代码不会有什么坏处吗?

function myFunction() {
    var token, tokens, id, input;
    $("[id^=\"some_id_\"]").each(function() {
        tokens = this.id.split("_");
        id = tokens[tokens.length - 1];
        input = document.getElementById("some_form_element_" + id);  //WORKS
        //input = $("#some_form_element_" + id); //DOESNT, alerts undefined

        alert(input.value);
    });
}

2 个答案:

答案 0 :(得分:6)

您正在警告input.value,jQuery包装器对象上未定义value

document.getElementById将直接返回DOM元素。但是$()返回一个包装DOM元素的jQuery对象。您可以使用$('#someId').attr('value');$('#someId').val()

获取jQuery案例中的输入值

这是一个演示:http://jsfiddle.net/CK2xr/

的小提琴

答案 1 :(得分:2)

你可能就是这样:

  1. 在IE中测试和
  2. 使用“name”属性而不是“id”。
  3. 当“name”属性与您正在寻找的“id”匹配时,Internet Explorer(至少是旧版本)会返回元素,这些浏览器会延续这些​​浏览器中存在的更为荒谬的API特性。

    编辑 - 澄清:Internet Explorer的document.getElementById()函数将匹配“id”属性“name”属性,并返回第一个它在DOM中找到的一个。 jQuery API试图实际满足“#”选择器语法的语义,即使在IE中,它也只匹配“id”属性。