我有点像javascript的新手,即使我建立了很多工作网站和应用程序..
btu我觉得天真的方式,我曾经把变量id传递给jquery ..例如,当我不得不使用一些旧的代码时,我曾经这样做过去.让我们假设我的所有网站都已用'a编码'这样的标签
<a id='myId' onclick='doSome(this.id)' > link </a>
Run Code Online (Sandbox Code Playgroud)
然后在JS中
function doSome(id){
//old code removed and replaced by jquery
jQuery("#"+ id).show();
}
Run Code Online (Sandbox Code Playgroud)
并且这种功能完美无瑕......
所以,再次假设我不能改变除函数内部代码以外的任何东西,使用变量id的最佳方法是什么?因为据我所知,我是否只使用过
jQuery(id).show();
Run Code Online (Sandbox Code Playgroud)
代替
jQuery("#"+ id).show();
Run Code Online (Sandbox Code Playgroud)
它不会工作......对吗?
jQuery的(ID).show();
确实不起作用,因为jQuery/ $function 的参数是一个选择器,而不是一个ID.
'#'+id作为选择器工作,但只有在其中的字符id有效用于选择器并且不需要转义时.
在HTML4/XHTML1中,只有字母数字加号.:-_在ID中有效,因此您只需担心.和:.如果你没有'#'+id在那里id为a.b你实际上可以选择具有ID的元素a和类b.在HTML5中,更多的字符在ID中有效,因此粗略地附加id #甚至更不可靠.
使用普通的旧DOM而不是选择器更少jQuery-ish,但它更安全且(更简单)更快:
$(document.getElementById(id))
Run Code Online (Sandbox Code Playgroud)
在任何情况下,id当你已经有权访问该元素时,依赖于选择一个元素是愚蠢的:document.getElementById(this.id)显然将是相同的this.
如果你可以改变标记,你最好只是传递this给函数,那么你可能会失去选择器/ getElementById,如果你不需要它,你也可能失去id属性.更好的是,完全避免内联事件处理程序属性并从脚本中分配事件处理程序,例如使用jQuery $('#myId').click(function() { ... });; 在函数内部,this将是有问题的元素.
虽然我不太明白代码应该做什么... show()但是myIdonclick myId似乎有点多余,因为它必须已经显示,以便你点击它.
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |