为什么Jquery $(#);不起作用,但是Javascript document.getElementById可以正常工作吗?

时间:2019-02-01 11:23:11

标签: javascript jquery html

我在Javascript中使用“ document.getElementById”具有一组功能齐全的代码。但是,当我将其更改为Jquery时,它将不起作用(并且没有错误)。

<!DOCTYPE html>
<html>
<head>
<style></style>
<script src="jquery-3.3.1.min.js"></script>
<script language="javascript">
    function formChk(){
    var success=true;
    var types = ["Western","Chinese","Local","Beverage"];
    var nameTxtBox=$("#name"); <!--This doesn't work-->
    var picturesTxtBox=document.getElementById("pictures"); <!--This works fine-->

相应的id =“ name”和id =“ pictures”在以下代码中:

<p><input type="text" id="name" name="name"></p>
<p><input type="text" id="pictures" name="pictures"></p>

控制台中没有错误消息。但是,代码并未按预期运行。整个代码应该执行表单验证检查-如果用户输入为空,则应抛出错误消息。但是,当我将“ getElementById”更改为JQuery $(#);时,表单验证不起作用。

为什么会这样?不是$(#);完全等同于document.getElementById?

4 个答案:

答案 0 :(得分:2)

不是$(#);完全等同于document.getElementById?

绝对不是,它们返回的元素非常不同,jQuery返回的是

  

在DOM中基于传递的参数或通过传递HTML字符串创建的匹配元素的集合。

Jquery() documentation

document.getElementById()返回时

  

描述与指定ID匹配的DOM元素对象的Element对象;如果在文档中未找到匹配的元素,则为null。

document.getElementById() documentation

如果为了与以前的代码兼容,必须访问jQuery集合中的Element对象,则可以使用数组符号。

因此,如果选择器匹配单个元素(例如ID),则可以

let el = $('#selector')[0];

模仿document.getElementById()的行为。

答案 1 :(得分:1)

$("#name")返回一个jQuery对象,而不是document.getElementById("pictures");这样的Element对象,以返回需要从jQuery对象中获取Element对象的Element对象。

$("#name")[0]

答案 2 :(得分:0)

如果要获取#name的值,则为

Out of memory: Kill process 28715 (postgres) score 150 or sacrifice child

答案 3 :(得分:0)

$('#fileUpload').val('');

我们必须在val()内部传递值。