<script>
function myFun(ele){
ele.each(function(){
var org = $(this).text();
$(document).delegate('.c','click',function(){
$(this).parent().append(org);
});
});
}
$(document).ready(function(e) {
myFun($('.text'));
});
</script>
<p class="text">12345678910<span class="c"> +</span></p>
<p class="text">abcdefghijklmnopq<span class="c"> +</span></p>
我有一个测试功能,当点击“+”按钮时,它会附加父文本。
离。如果我点击第一个,它应该附加123 ...
如果我点击第二个应该附加abc ...
现在发生的事情就是追加123 ... abc ......
如何只附加父文本
答案 0 :(得分:1)
你需要这样做:
$('.c').click(function () {
$(this).append($(this).parent().text());
});
注意,使用当前进行绑定的方式,实际上是将两个事件绑定到每个.c类。您循环遍历所有.text类,并绑定到.c。因为有两个,你可以点击两个绑定,两个处理程序和两个执行。
答案 1 :(得分:0)
根据您的示例,here更新了jsfiddle。
function myFun(ele){
$(document).delegate('.c','click',function() {
var parent = $(this).parent();
parent.append(parent.text());
});
}
$(document).ready(function(e) {
myFun($('.text'));
});
答案 2 :(得分:0)
以下假设您只想复制文本,而不是孩子span
$(".text").on("click", ".c", function () {
var parentText = $(this).parent(".text").clone().children().remove().end().text().trim();
$(this).prepend(parentText);
});
答案 3 :(得分:0)
您的代码存在的问题是,对于每个“.text”,您调用“$(document).delegate('。c','click',...”两次(对于每个“.c”),导致两个点击处理程序附加到每个“.c”
要纠正此问题,您需要使用find函数将点击处理程序仅附加到当前“.text”中的“.c”:
function myFun(ele){
ele.each(function(){
var org = $(this).text();
$(this).find('.c').click(function(){
$(this).parent().append(org);
});
});
}