替换文件.getElementById与jquery函数
Replacing document.getElementById with jquery function?
我有这样的代码片段:
$('#selector1,#selector2').change(function(){
checkDate(document.getElementById($(this).attr("id")));
});
上面的工作很好,但我想使用jQuery的$
代替document.getElementById
。所以,我尝试了这个,但它给了我一个javascript错误:TypeError: valueToTest is undefined
$('#selector1,#selector2').change(function(){
checkDate($("#" + $(this).attr("id")));
});
当您调用document.getElementById('id')
时,您将获得对DOM节点本身的引用,而调用$('#id')
将返回一个jQuery对象,该对象具有与选择器匹配的DOM节点的引用(如果有具有给定id的元素)。对于前者,您可以直接访问其属性(this.id
, this.value
等),而对于后者,您需要使用jQuery函数(.prop()
, .val()
等)。
如果你想传递一个jQuery对象,你可能还需要修改你的checkDate
函数,以避免直接访问属性的错误,而这些属性不再存在于jQuery对象上。
话虽如此,这一行:
checkDate(document.getElementById($(this).attr("id")));
比它需要的复杂得多。您已经获得了对元素this
的引用,因此访问它的id
并将其传递给document.getElementById()
以获得对它的另一个引用是没有意义的。您可以简单地执行:
checkDate(this);
您正在传递一个jQuery对象作为参数checkDate()
而不是DOM元素,要获得DOM元素,您可以这样做:
$('#selector1,#selector2').change(function(){
checkDate(this);
});
您的代码片段:
document.getElementById($(this).attr("id"))
上面的代码返回一个HTML DOM Object
。如果您使用$(this);
,您将不会得到DOM Object
,而是jQuery object
。因此,您需要将其修改为$(this)[0]
或this
以获得DOM Object
,这样您的代码就可以完美地工作了。
代码:
$('#selector1,#selector2').change(function(){
checkDate($(this)[0]);
});
或
$('#selector1,#selector2').change(function(){
checkDate(this);
});
文档。getElementById检索(一个)DOM节点,而jQuery返回一个jQuery对象,实际上是一个DOM节点数组。因此,要替换
var element = document.getElementById($(this).attr("id"));
使用jquery,这样做
var element = $($(this).attr("id"))[0];
// or
var element = $($(this).attr("id")).get(0);
相关文章:
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 如何从jquery函数返回变量
- 如何将具有文本类型值的var放入jQuery函数中
- Jquery函数在错误的时间提交
- 锚链接无法使用.slideUp jquery函数
- 重新分解jQuery函数
- 如何在视图模型contet更新更新上调用Jquery函数
- 如何向这个javascript/jquery函数添加参数
- 添加类来触发jquery函数
- 更改智能表中的页面将停止JQuery函数的工作
- 使用每500ms运行一次的jquery函数是个好主意吗
- jQuery函数不能只在一个页面上工作
- 如何将jquery函数链接到vanilla选择器
- 仅在小型设备上调用jQuery函数
- 如何将jquery函数仅应用于大屏幕
- 奇怪的jquery函数行为
- Backbone listenTo不将jquery函数作为处理程序进行激发
- 在jquery函数内部设置来自jquery函数的var;t运行
- 从Jquery函数中获取一个变量