可以使用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 -->");