$(“#id”).val() : No find
$(“input[id=‘id’]”).val() : OK
您知道上述两种情况之间的区别吗?你为什么要这么做?
答案 0 :(得分:2)
要回答此问题,我们需要了解Jquery选择器的工作原理。
$("#id")
内部使用document.getElementById();
$("input[id='id']")
在内部使用document.getElementsByTagName()
来获取所有匹配的'Element tag'和具有ID的过滤器。
这两个操作之间的主要区别是情况1仅返回匹配的对象,而情况2与prevObj或包含对象一起返回。
因此,从技术上讲,两个val()
的操作都应返回相同的结果。
答案 1 :(得分:0)
您在问为什么:
$(“#id”).val() // <--- This doesn't work,
// and
$(“input[id=‘id’]”).val() // <--- ... and this does work?
假设您的标记看起来像这样:
<label for="id"> Input </label> <br />
<input id="id" type="text" value="test"/>
...如果是这种情况,那么下面的方法应该可以工作(我已经包括了香草JS比较作为参考,这与jQuery在幕后的工作方式非常接近)。
// The jQuery Way
const firstCase = $("#id").val() // "test"
const secondCase = $("input[id='id']").val() // "test"
// The Vanilla Way
const thirdCase = document.getElementById("id").value; // "test"
const fourthCase = document.querySelector("input[id='id']").value; // "test"
请提供您要与之交互的HTML标记,这样我们就可以更好地了解您要解决的问题。