我是JavaScript新手。完整代码是here(无法在问题的正文中输入jQuery)。
以下是代码的JS部分
$(document).ready(function(){
$("#btn1").click(function(){
var newtext = $("<b>It works!</b>");
newtext.hide();
$("p").append(newtext);
newtext.fadeIn();
});
});
我打算做的是,当用户点击按钮(“#btn1”)时,一段新文本(“It works!”)应出现在每个的末尾HTML的> <p>
元素。但是当我运行代码时,文本只会附加到最后一个 <p>
元素。也就是说,如果您从上面的链接打开源代码,您会看到有两个<p>
元素。但是“它有效!”文本仅附加到第二个文本。
如何将此文字追加到每个 <p>
元素的末尾?
答案 0 :(得分:9)
它将文本附加到每个<p>
。但是,当您执行.fadeIn()
时,您只会影响您追加的最后一个副本。尝试将其更改为
$("p b").fadeIn();
请注意,此解决方案非常简单,如果您的HTML结构变得复杂,它可能会导致奇怪的效果。你可以用这样的东西更加精确:
$(document).ready(function() {
var txtid = 1;
$("#btn1").click(function(){
var newtext = $("<b>It works!</b>").addClass("txt-" + txtid);
newtext.hide();
$("p").append(newtext);
$("p .txt-" + id).fadeIn().removeClass("txt-" + txtid);
txtid += 1;
});
});
为您插入的每个文本块添加一个类。每个按钮单击的类都不同,但同时插入的所有文本块共享。这样,您就可以确保.fadeIn()
来电仅影响您刚刚插入的内容,而不会影响其他迷路<b>
代码。
答案 1 :(得分:0)
尝试使用.each(),例如
$(document).ready(function(){
$("#btn1").click(function(){
$("p").each(function(index, elem){
var newtext = $("<b>It works!</b>");
newtext.hide();
$(elem).append(newtext);
newtext.fadeIn();
});
});
});
答案 2 :(得分:0)
答案 3 :(得分:0)
这有效
$(document).ready(function(){
$("#btn1").click(function(){
var newtext = $("<b>It works!</b>");
$(newtext).hide("fast", function() {
$("p").append(newtext).fadeIn();
});
});
});
答案 4 :(得分:0)
要将文字附加到每个p
标记,只需删除此行newtext.hide();
以便您的脚本看起来像
$("#btn1").click(function(){
var newtext = $("<b>It works!</b>");
//newtext.hide();
$("p").append(newtext);
newtext.fadeIn();
});