可以使用jquery向代码动态添加注释吗?
我试过:可以使用jquery向代码动态添加注释吗?,jquery,html,Jquery,Html,我试过: <script> $(function() { $('.class').before('<!--'); $('.class').after('-->'); }); </script> $(函数(){ $('.class')。在('')之前; }); 但它不起作用的原因我不知道 有人能帮我理解为什么它不起作用,我会怎么做吗?谢谢,非常感谢 看起来您正试图使带有.class的对象消失。改用.hide()。注释只有在浏览器首次加载页面时才会被解析,
<script>
$(function() {
$('.class').before('<!--');
$('.class').after('-->');
});
</script>
$(函数(){
$('.class')。在('')之前;
});
但它不起作用的原因我不知道
有人能帮我理解为什么它不起作用,我会怎么做吗?谢谢,非常感谢 看起来您正试图使带有
.class
的对象消失。改用.hide()
。注释只有在浏览器首次加载页面时才会被解析,因此添加注释不会注释掉某些内容
您需要了解HTML和DOM之间的区别。HTML是页面的文本表示,但浏览器在页面加载时将其解析为DOM。JavaScript在DOM上工作,而不是在HTML上。在DOM元素上使用.innerHtml()
重新解析HTML
使用innerHtml()
隐藏使用HTML注释的元素(但请注意,我永远不会这样做-我只是演示如何执行您在问题中试图执行的操作):
HTML:
你好
哇
老兄
JavaScript(+jQuery):
$(文档).ready(函数(){
setTimeout(hideIt,1000);
});
函数hideIt(){
$('div').html(“”);
}
我认为您需要使用prepend和append来按照您的思维方式进行操作。但不确定它是否真的会让事情消失
如果希望某些内容不可见,最好使用hide() 使用.hide()可以更好地实现您的目标。还值得一提的是,注释对象是DOM的一部分,因此理论上可以使用jQuery操作它们(或添加新对象)。不,不能添加这样的起始和结束标记。注释标记是一个单独的标记,它不是一个单独的开始标记和结束标记。因此,
不是有效的HTML片段,因为它们不包含完整的标记
如果你想把一个元素放在一个注释中,它就不再是元素了,所以你必须得到元素的HTML代码,在它周围放一个注释标记,然后用注释替换元素
如果这样做是为了隐藏元素,那么只需使用
hide
方法即可。这里混合了两个完全不相关的概念:HTML和DOM
HTML是一种描述内容的文本方式,与代码一样,它也有注释内容的方式。DOM是浏览器中生成的对象模型
一旦HTML被读取和解析,DOM被创建,HTML就会被丢弃,不再需要。向事物添加HTML注释不会改变它们,事实上也没有意义(尽管很容易看出您的想法,但不要误解)
拥有DOM后,要隐藏元素而不删除它,请使用。要完全删除它,请使用
这两个选项的实例:一些选项:
$('.mycurrentclass').remove();
$('.mycurrentclass').detach();// see below for possible use
$('.mycurrentclass').css({display:'none'});
$('.mycurrentclass').hide();
$('.mycurrentclass').toggleClass('myhiddenclass');
$('.mycurrentclass').addClass("myhiddenclass");
$("myselector").toggle(
function () {
$(this).addClass("myhiddenclass");
},
function () {
$(this).removeClass("myhiddenclass");
}
);
// programtic like you seem to want:(first part puts it back, else detaches it)
var p;
if ( p )
{
p.appendTo("mywheretoappenditselector");
p = null;
}
else
{
p = $("myselector").detach();
};
要提供更直接的答案,请使用:
var gonee = $('.myclass');
$('.myclass').replaceWith('<!--' + gonee + '-->');
var gonee=$('.myclass');
$('.myclass')。替换为('');
行动见我:请使用.html()动态添加html内容
例如:
$(.dv)。单击(函数(){
$(“.dy”).html(“abcd”);
});
尝试一下,希望它对您有用。$(“”);
$("<!--your comment text here -->").insertAfter(selector);
或
$(选择器)。在(“”)之后;
您如何检查它是否有效?我情不自禁地感觉到你在做错事。你为什么要这样做?你为什么要这样做??任何原因如果需要临时删除元素,可以使用
.detach()
。如果你需要它是永久的,请使用.remove()
。有趣的是,愚蠢的问题会得到很多愚蠢的答案:)[包括我的问题]+1-正是我想说的关于HTML和DOM的内容,但更好:)谢谢,我会尽快感谢你,但stackoverflow没有给我发电子邮件确认。我最终探索了互联网,找到了一个.css解决方案。Style.display=“无”。我之所以需要这样做,是因为我完成了一个类似于lazy的flash加载程序——我现在只需要完善它。@user455046:“……我最终探索了互联网,找到了一个.css解决方案。Style.display=“none”…”是的,这就是隐藏所做的。你的隐藏是有效的,确实回答了这个问题,但是逆转它并不像使用.detach()那么容易(请参见我的示例中的一个选项/使用模式)@Mark-就像我说的,我从来没有做过这样的事情-我只是展示了如何像OP想要做的那样添加HTML注释。是的,我同意,为什么我对这个答案投了赞成票。请参阅我的(最新)答案,以获得更直接/可能更好的“解决方案”,从而消除对外部div的依赖。谢谢,这正是我想要做的-所以谢谢,我确实选择了.css路线来实现我想要的。Display=“无”。我正在构建一个懒惰的flash加载程序,并完成了它,现在我需要把它做得更好。你是说''
?这目前将
添加到DOM:)[无论如何在Chrome中]在IE8兼容模式下,“goner”div在fiddle页面上消失。因此,从理论上讲,包含“goner”文本的div应该是上下文,因此通过添加注释来删除/隐藏。Mark-正如@Skilldrick指出的,注释最终看起来像
,而不是
。尽管使用.html()
也不会真正起作用。
var gonee = $('.myclass');
$('.myclass').replaceWith('<!--' + gonee + '-->');
$(.dv).click(function(){
$(".dy").html("abcd");
});
<div class=".dy" >
</div>
$("<!--your comment text here -->").insertAfter(selector);
$(selector).after("<!--your comment text here -->");