我有一天学习JQuery并且对octothorpe语法有疑问。
我知道#可以用来指定对象的ID。
示例:
HTML对象
<div id="myDiv">...</div>
使用#
的JQuery语句...
$("#myDiv").hide();
...
然而,我注意到我可以在不使用#的情况下完成同样的事情。
不使用#
的JQuery语句...
$(myDiv).hide();
...
我更喜欢不涉及引号和octothorpe的语法,但我不确定这样做是否会被视为不良习惯/习惯。
我应该吮吸它并坚持使用octothorpe语法,还是这是一个偏好的问题?
答案 0 :(得分:2)
这是一种非常糟糕的做法,也是一种非常不可靠的引用DOM Elements的方法。
采用以下示例:
var myDiv = 'blahblahblah';
$(myDiv).hide();
这将转化为:
$('blahblahblah').hide();
这不是你想要的。
$('#myDiv').hide();
将始终有效。
在JavaScript范围内呈现元素ID也是一种非标准的传统;所以不要依赖它!
答案 1 :(得分:1)
您之后的语句只能起作用,因为您有一个myDiv变量,或者因为您在with语句中,或者类似的东西。它在正常情况下不起作用。所以要回答你的问题,你需要一直使用第一种语法......除非你碰巧有一个变量,如:
var myDiv = document.getElementById("myDiv");
或
var myDiv = "#myDiv";
哦,我差点忘了:有些浏览器会有效地将代码包装在with语句中;我完全忘记了哪些浏览器,但我认为IE是唯一能够做到这一点的浏览器。因此,您实际上可能没有var或with语句,但是在幕后您的浏览器会添加一个(这意味着您的代码只能在该浏览器上运行,而不能在其他浏览器上运行)。
答案 2 :(得分:1)
如果您将变量设置为div,则会使用您显示的第二种方法,例如
var myDiv = $('#myDiv');
或
var myDiv = '#myDiv';
答案 3 :(得分:0)
嗯,省略#和引号会破坏我的计算机上的jQuery选择器...我会在你的页面上查看源代码,并确保你的浏览器没有使用“#”仍在的页面的缓存版本代码。
据我了解,$(mydiv)将选择任何&lt; mydiv /&gt;文档中的标签,其中可能没有= D
安迪
答案 4 :(得分:0)
AFAIK,在你最后一个例子中像myDiv
这样的内容依赖于浏览器的细微差别,并且在某些浏览器中可能会中断。
我所知道的另一个问题是,如果在实际定义变量var myDiv = "foo";
之类的代码的某处,这会导致冲突。至少,使用#myDiv
语法,您明确表示希望按ID选择内容。