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);
});