jquery将文本附加到父/子id
我有一个这样的结构:jquery将文本附加到父/子id,jquery,append,Jquery,Append,我有一个这样的结构: <div class="post"> <div class="left"> <div class="foo"><p><a href="#" id="clickme<?php echo $num;?>">blah</a></p></div> </div> <div class="right"> <div class="text"&g
<div class="post">
<div class="left">
<div class="foo"><p><a href="#" id="clickme<?php echo $num;?>">blah</a></p></div>
</div>
<div class="right">
<div class="text">blah blah blah blah</div>
</div>
<p class="date">27/12/12</p>
</div>
不工作
$('#clickme<?php echo $num;?>').closest('.post').find('.date').append('<span id="msg">blah blah blah blah</span>');
我曾尝试在延迟后将.remove()
添加到末尾,但这完全停止了它的工作
$('#msg').fadeIn('fast').delay(1000).fadeOut('fast').delay(1000).remove();
完整代码
$('#clickme')。最近('.post')。查找('.date')。追加('blah blah blah');
$('#msg').fadeIn('fast').delay(1000).fadeOut('fast')代码>您希望将每个元素与以clickme
开头的id匹配。因此,您可以使用:
更新:
正如上面的单击
示例所示,您不应该将$(“#clickme”)
选择器放在单击()事件中。这将重新运行选择器(并返回与单击的选择器不同的元素)在单击()
,使用此
,或$(此)
要在fadeIn
/fadeOut
后删除,请使用回调函数。如果调用remove()
,它将立即删除,正如您所看到的。可以按如下方式添加回调函数(请看结尾):
为了更安全,最好保留对添加范围的引用,并直接调用fadeIn
/fadeOut
,而不是重用选择器(如$('#msg')
):
$('[id^=clickme]')。单击(函数(){
var alreadyVotedSpan=$(“您已经为这篇文章投票了”);
$(this).closest('.post').find('.date').append(alreadyVotedSpan);
alreadyVotedSpan.fadeIn('fast').delay(1000).fadeOut('fast').delay(1000,function(){this.remove()});
});
您希望将每个元素与以clickme
开头的id匹配。因此,您可以使用:
更新:
正如上面的单击
示例所示,您不应该将$(“#clickme”)
选择器放在单击()事件中。这将重新运行选择器(并返回与单击的选择器不同的元素)在单击()
,使用此
,或$(此)
要在fadeIn
/fadeOut
后删除,请使用回调函数。如果调用remove()
,它将立即删除,正如您所看到的。可以按如下方式添加回调函数(请看结尾):
为了更安全,最好保留对添加范围的引用,并直接调用fadeIn
/fadeOut
,而不是重用选择器(如$('#msg')
):
$('[id^=clickme]')。单击(函数(){
var alreadyVotedSpan=$(“您已经为这篇文章投票了”);
$(this).closest('.post').find('.date').append(alreadyVotedSpan);
alreadyVotedSpan.fadeIn('fast').delay(1000).fadeOut('fast').delay(1000,function(){this.remove()});
});
所以我只好简单地创建一个$('body')。append()
“一刀切”而不是我想要的,但我离开了,有一些食物回来了,吃得饱饱的,平静的,休息的,然后打开灯泡!在其上粘贴设置超时>删除:
$(function() {
$('[id^=<?php echo $num;?>]').closest('.post').find('.date').append('<span id="msg">blah blah blah blah</span>');
$('#msg').fadeIn('fast').delay(2000).fadeOut('fast');
setTimeout(function() {
$('#msg').remove();
}, 3000);
});
$(函数(){
$('[id^=]')。最近('.post')。查找('.date')。追加('blah blah blah');
$('msg').fadeIn('fast').delay(2000).fadeOut('fast');
setTimeout(函数(){
$('#msg')。删除();
}, 3000);
});
这将删除淡出后的原始附加消息代码,以便将其再次附加到与下一次单击关联的下一个.post.date
我以前曾尝试添加.delay(2000).remove()代码>就像我在OP update中说的,但那不起作用,事实上从来没有起作用(为什么我从来都不记得这个lol)
谢谢你抽出时间来帮助我 所以我只好简单地创建了一个$('body')。append()
“一刀切”而不是我想要的,但我离开了,后来有一些食物回来,吃得饱饱的,平静的,休息的,然后打开灯泡!在其上粘贴设置超时>删除:
$(function() {
$('[id^=<?php echo $num;?>]').closest('.post').find('.date').append('<span id="msg">blah blah blah blah</span>');
$('#msg').fadeIn('fast').delay(2000).fadeOut('fast');
setTimeout(function() {
$('#msg').remove();
}, 3000);
});
$(函数(){
$('[id^=]')。最近('.post')。查找('.date')。追加('blah blah blah');
$('msg').fadeIn('fast').delay(2000).fadeOut('fast');
setTimeout(函数(){
$('#msg')。删除();
}, 3000);
});
这将删除淡出后的原始附加消息代码,以便将其再次附加到与下一次单击关联的下一个.post.date
我以前曾尝试添加.delay(2000).remove()代码>就像我在OP update中说的,但那不起作用,事实上从来没有起作用(为什么我从来都不记得这个lol)
谢谢你抽出时间来帮助我 [id^=clickme]
的作用与$(“#clickme”)
向OP追加更多信息的作用相同。您看到第二个演示链接了吗?是的,我看到了,该代码实际上是单击if-else(单击if-ok做其他事情显示消息)的一部分,因此没有像以前那样查找单击事件。我更新了答案。注意$(this)
的用法。你是说它是onclick if else的一部分。请将完整的onclick/if/else代码添加到问题中。[id^=clickme]
与$(“#clickme”)
将附加更多信息。您看到第二个演示链接了吗?是的,我看到了,代码实际上是onclick-if-else(onclick-if-ok-do-other-show消息)的一部分所以不要像以前那样寻找点击事件。我更新了答案。注意$(this)
的用法。你是说它是onclick if else的一部分。请将完整的onclick/if/else代码添加到问题中。
$('[id^=clickme]').closest('.post').find('.date').append('<span id="alreadyvoted">You already voted for this post</span>');
$('[id^=clickme]').click(function () {
$(this).closest('.post').find('.date').append('<span id="alreadyvoted"> You already voted for this post</span>');
});
$('#msg').fadeIn('fast').delay(1000).fadeOut('fast').delay(1000, function() { this.remove() });
$('[id^=clickme]').click(function () {
var alreadyVotedSpan = $('<span id="msg"> You already voted for this post</span>');
$(this).closest('.post').find('.date').append(alreadyVotedSpan);
alreadyVotedSpan.fadeIn('fast').delay(1000).fadeOut('fast').delay(1000, function() { this.remove() });
});
$(function() {
$('[id^=<?php echo $num;?>]').closest('.post').find('.date').append('<span id="msg">blah blah blah blah</span>');
$('#msg').fadeIn('fast').delay(2000).fadeOut('fast');
setTimeout(function() {
$('#msg').remove();
}, 3000);
});