jQuery("#"+id) Vs document.getElementById("&q
jQuery("#"+id) Vs document.getElementById(""+id)
我有一个div id="ftbutton_1357567084/Team:8/User:10/Image:195"
的以下id,我想在调用ajax后替换它的html。
当我尝试使用jQuery这样做时,它不起的作用
jQuery("#"+id).html(SOME HTML HERE);
以下代码适用于
document.getElementById(id).innerHTML = SOME HTML HERE;
我知道ID不应该包含一些特殊字符
ID attributes should be = after an initial letter (a-z or A-Z), may also use
periods and colons, in addition to letters, numbers, hyphens, and underscores.
参考How do I select an element by an ID that has characters used in CSS notation?
但由于某些原因,我无法更改每个元素的id,因为它被认为是网站。
我也试过跟随,但它不起作用
function jq( myid ) {
return "#" + myid.replace( /(:|'.)/g, "''$1" );
}
jQuery(jq("#"+id)).html(SOME HTML HERE);
我只是想知道如果是这种情况,我需要使用document.getElementById(""+id)
而不是jQuery("#"+id)
吗?
或者换句话说
document.getElementById(""+id)
比jQuery("#"+id)
更可靠吗?
这样做:
$('[id="ftbutton_1357567084/Team:8/User:10/Image:195"]');
这实际上是一个有点有趣的问题。jQuery很可能认为:
正在启动一个过滤器,就像$('div:visible')
一样,但却没有意识到它是一个完整的ID
问题是您添加了两次#
。一次在函数中,一次在实际的jQuery
调用中。应该是这样的:
function jq( myid ) {
return "#" + myid.replace( /(:|'.|'/)/g, "''$1" ); //note that added `/`
}
jQuery(jq(id)).html(SOME HTML HERE); //don't add # again!
一个稍微不相关的提示:请始终记住,您可以使用实际的DOM对象启动jQuery实例:
jQuery(document.getElementById(someId)); //this will work
/
是一个元字符,您也必须对其进行转义:
要将任何元字符(如
!"#$%&'()*+,./:;<=>?@[']^`{|}~
(用作名称的文字部分,必须使用两个反斜杠对其进行转义:''
。
所以这应该很好:
function escape_selector( selector ) {
return selector.replace( /([!"#$%&'()*+,./:;<=>?@'[''']^`{|}~])/g, "''$1" );
}
(正如他在评论中提到的,您还需要删除'#' +
,否则您需要将其添加到选择器中两次(。
DEMO
最简单的答案似乎是:
function jq( myid ) {
return $(document.getElementById(myid));
}
jq(myid).html(...);
正确的函数是:
function jq( myid ) {
return *$("#" + myid)*.replace( /(:|'.)/g, "''$1" );
}
jQuery(jq("#"+id)).html(SOME HTML HERE);
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 如何用更合适的内容替换document.write
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- document.getElementById(“#”).innerHTML=“”;你好"+user+&quo
- 工作方法:document.getElementById(“ElementName”).style="显示:阻
- 为什么"document.styleSheets”;每次刷新3到5次浏览器后返回空值
- "document.getElementById”;不起作用
- document.getElementsByClassName().inerHTML总是返回"未定义”;
- var imgLoader = document.getElementById("imgLoader"
- 发送两个数组到一个函数,该函数使用document.attachEvent("onmousemove"
- 具有src=""的Iframe;javascript:document.write"IE9
- document.log():"undefined不是函数”;
- "var canvas=document.getElementById(“canvas”);可以't不
- 为什么JS代码"var a=document.querySelector('a[data-a=1]
- document.getElementById总是返回"空”;用于色带
- 我如何从由“”创建的数组中调用元素;document.getElementBytag()"