Javascript 单击按钮获取父项';s每个函数中的文本值 功能myFun(ele){ ele.each(函数(){ var org=$(this.text(); $(document).delegate('.c','click',function(){ $(this.parent().append(org); }); }); } $(文档).ready(函数(e){ myFun($('.text')); }); 12345678910+ abcdefghijklmnopq+

Javascript 单击按钮获取父项';s每个函数中的文本值 功能myFun(ele){ ele.each(函数(){ var org=$(this.text(); $(document).delegate('.c','click',function(){ $(this.parent().append(org); }); }); } $(文档).ready(函数(e){ myFun($('.text')); }); 12345678910+ abcdefghijklmnopq+,javascript,jquery,Javascript,Jquery,我有一个测试函数,当“+”按钮点击时,它会附加父文本 如果我点击第一个,它会附加123 如果我点击第二个应该附加abc 现在发生的是这一切。。。abc 如何仅附加父级文本您需要执行以下操作: <script> function myFun(ele){ ele.each(function(){ var org = $(this).text(); $(document).delegate('.c','click',function(

我有一个测试函数,当“+”按钮点击时,它会附加父文本

如果我点击第一个,它会附加123

如果我点击第二个应该附加abc

现在发生的是这一切。。。abc

如何仅附加父级文本

您需要执行以下操作:

<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>

注意,按照当前的绑定方式,实际上是将两个事件绑定到每个.c类。您正在遍历所有.text类,并绑定到.c。因为有两个绑定,所以在单击时会得到两个绑定、两个处理程序和两个执行。

根据您的示例,JSFIDLE是否已更新

$('.c').click(function () {
    $(this).append($(this).parent().text());
});

这里假设您只希望复制文本,而不希望复制子
span


代码的问题是,对于每个“.text”,您将调用“$(document).delegate(“.c”、“click”、…”两次(对于每个“.c”),这将导致两个click处理程序附加到每个“.c”

要更正此问题,您需要使用如下查找函数将单击处理程序仅附加到当前“.text”中的“.c”:

$(".text").on("click", ".c", function () {
    var parentText = $(this).parent(".text").clone().children().remove().end().text().trim();
    $(this).prepend(parentText);
});

为什么要使用
$(document).delegate('.c','click',function()){
在每个?您只需要绑定事件一次..这应该超出您的
。每个
循环我使用委托的原因是,因为我将使用jquery加载另一个页面,我将需要此函数用于另一个页面Too在附加父级文本时是否要包含
+
要显示的文本,在跨度标记之后和结束段落标记之前?当您多次单击时会发生什么情况?
$(".text").on("click", ".c", function () {
    var parentText = $(this).parent(".text").clone().children().remove().end().text().trim();
    $(this).prepend(parentText);
});
function myFun(ele){
    ele.each(function(){        
        var org = $(this).text();
        $(this).find('.c').click(function(){
            $(this).parent().append(org);
        });
    });
 }