我正在使用jquery处理页面。我想更改html dom中的文本。但是,当我尝试这样做时,它会删除dom下的整个html代码。 你可以在这里查看jsfiddle:
html标记
<div class="container">
<h1 class="page-header">Edit Profile
<div class="broadcast">
<button id="button1" class="btn btn-success"><i class="icon-bullhorn"> </i>button1</button>
</div>
<div class="broadcast">
<button id="button2" class="btn btn-success"><i class="icon-bullhorn"></i>button2</button>
</div>
</h1>
</div>
JSfile
$("#button2").on('click', function(e){
$(".page-header").text("another text");
});
我只想更改编辑个人资料文字。我不想删除我的按钮。我的代码怎么了?
我知道我已经在我的div
中插入了一些h1
,这是有意的。我想知道这种情况是否有任何解决方案?
假设我创建了一个
<div id="hello">
Hello
<a href=#></a>
<button>text</button>
<div>
在这种情况下,如果我想改变&#34;你好&#34;文本。我该怎么办?
答案 0 :(得分:3)
在正确位置关闭h1
:
<div class="container">
<h1 class="page-header">Edit Profile</h1>
<div class="broadcast">
<button id="createchannel" class="btn btn-success"><i class="icon-bullhorn"></i>Create Channel</button>
</div>
<div class="broadcast">
<button id="listchannel" class="btn btn-success"><i class="icon-bullhorn"></i>List Channel</button>
</div>
</div>
你的h1几乎在整个div上都是开放的。
答案 1 :(得分:3)
您使用JQuery更改h1
标记的文本,在您的HTML中,您的标记包含所有内容
<div class="container">
*Starts here*<h1 class="page-header">Edit Profile
<div class="broadcast">
<button id="button1" class="btn btn-success"><i class="icon-bullhorn"></i>button1</button>
</div>
<div class="broadcast">
<button id="button2" class="btn btn-success"><i class="icon-bullhorn"></i>button2</button>
</div>
</h1>*ends here*
</div>
您想要的是在Edit Profile
之后关闭标题,因此请将其更改为:
<div class="container">
<h1 class="page-header">Edit Profile</h1>
<div class="broadcast">
<button id="button1" class="btn btn-success"><i class="icon-bullhorn"></i>button1</button>
</div>
<div class="broadcast">
<button id="button2" class="btn btn-success"><i class="icon-bullhorn"></i>button2</button>
</div>
</div>
答案 2 :(得分:2)
试试这个
$("#button2").on('click', function(e){
$('h1').contents().first()[0].textContent='another Title';
});
检查jsFiddle
处的输出答案 3 :(得分:1)
您可以尝试此操作(不对HTML代码进行任何更改)
$("#createchannel").on('click', function(e){
var text = $(".page-header")[0].firstChild;
text.textContent = "another text";
});
答案 4 :(得分:1)
尝试这样的事情:
<div class="container">
<h1 class="page-header"><span id='under_header'>Edit Profile<span>
<div class="broadcast">
<button id="button1" class="btn btn-success"><i class="icon-bullhorn"></i>button1</button>
</div>
<div class="broadcast">
<button id="button2" class="btn btn-success"><i class="icon-bullhorn"></i>button2</button>
</div>
</h1>
</div>
答案 5 :(得分:0)
这可以通过javascript实现当前标记,但我建议您只需关闭H1标签并相应调整按钮上的样式
<div class="container">
<h1 class="page-header">Edit Profile</h1>
<div class="broadcast">
<button id="button1" class="btn btn-success"><i class="icon-bullhorn"></i>button1</button>
</div>
<div class="broadcast">
<button id="button2" class="btn btn-success"><i class="icon-bullhorn"></i>button2</button>
</div>
</div>
您可以使用此脚本使用当前标记执行此操作:
$("#createchannel").on('click', function(e){
$(".page-header")[0].firstChild.data = "Create Channel";
});
这里是小提琴: http://jsfiddle.net/msxpwr5p/3/
这绝对是一个脆弱的解决方案,如果你的标记改变,这可能很容易破解。
答案 6 :(得分:0)
即使在评论部分已经说过,但我要记住,你不能改变结束标签的位置。在更改文本之前,您可以从DOM中分离元素:
$("#createchannel").on('click', function(e){
var $child = $(".page-header").children().detach();
$(".page-header").text("Create Channel").append($child);
});
分离它们将允许您在从DOM中删除它们时保留对该元素的引用。使用.text()
时,它会清空目标DOM元素并更改其文本。因此,在更改文本后,您可以附加分离的元素。