javascript – Fragen, auf die jQuery hier hinweist
滿天的星座
滿天的星座 2017-07-05 11:05:00
0
4
984

Anforderungen:
Eine Liste, jede Spalte verfügt über eine Schaltfläche „Ändern“. Nach dem Klicken auf die Schaltfläche „Ändern“ kann ein Textbereich angezeigt werden, um den Inhalt einzugeben und ihn in der entsprechenden Liste zu speichern Speichern Sie jedes Mal die zweite Liste. Beim Ändern des Inhalts wird der durch die vorherige
geänderte Listeninhalt überschrieben.
Code: html

  • 添加备注

    修改
  • 添加备注

    修改
  • 添加备注

    修改
jQuery, Methode-1
$('li').on('click', 'span', function() { var me = $(this); $('#mask').show(); $('#edit').show(); $('.text').val(''); $('.sure').on('click', function() { $('#mask').hide(); $('#edit').hide(); var text = $('.text').val(); // 这里如果 find('p'),会把之前修改过的P的text也替换了,目前我的替代方法就是去掉 find('p') me.parent().find('p').html( text + '修改' ); }); });

Methode 2: Schleifenverarbeitung, der

zuvor

geänderte Inhalt wird ebenfalls überschrieben

$('li').each(function(index) { alert(index) $(this).find('span').on('click', function() { var me = $(this); $('#mask').show(); $('#edit').show(); $('.text').val(''); $('.sure').on('click', function() { $('#mask').hide(); $('#edit').hide(); var text = $('.text').val(); me.parent().find('p').html( text ); // alert(index) }); }); });
Ich habe schon lange mit diesem Problem zu kämpfen, obwohl ich das Gefühl habe, dass diese Lösung nicht sehr gut ist. Wenn der HTML-Code jedoch später geändert wird, kann er nicht verwendet werden der Indexwert, und dann ist das Problem, ich habe immer wieder verschiedene Methoden ausprobiert, aber nichts hat funktioniert. Ich weiß wirklich nicht, wo ich einen Fehler gemacht habeIch hoffe, jemand kann mir ein paar Hinweise geben. Vielen Dank an alle

滿天的星座
滿天的星座

Antworte allen (4)
漂亮男人
var me; $('li').on('click', 'span', function() { me = $(this); $('#mask').show(); $('#edit').show(); $('.text').val(''); }); $('.sure').on('click', function() { $('#mask').hide(); $('#edit').hide(); var text = $('.text').val(); me.parent().find('p').html( text + '修改' ); });

改成这样就好了。

或者

$('li').on('click', 'span', function() { var me = $(this); $('#mask').show(); $('#edit').show(); $('.text').val(''); $('.sure').off('click'); $('.sure').on('click', function() { $('#mask').hide(); $('#edit').hide(); var text = $('.text').val(); me.parent().find('p').html( text + '修改' ); }); });

因为你把.sure元素的on事件放在了li span的点击事件,相当于你每点击一下span,就会给.sure添加一个监听事件,所以每点一次就多响应一次。

    phpcn_u1582

    两段代码都有问题啊。

    你在一个click事件里面绑定了另一个click,那么每次这个按钮点击的时候都会重复绑定这个事件的。

    一个最简单但是不高效的解决方式就是:当弹出关闭后,为按钮解绑。

    $('.sure').off('click');

    https://jsfiddle.net/gLfsa02b/

      伊谢尔伦

      差点被你带沟里……这个不是this的问题,而是因为每次点击span都会给.sure绑定一次事件,所以后来点.sure的时候,触发了 n 个事件,也包括之前的。所以你看到的效果就是之前的也被覆盖了。

      var me; $("li").on("click", "span", function() { me = $(this); $("#mask").show(); $("#edit").show(); $(".text").val(""); }); $(".sure").on("click", function() { if (!me) { return; } $("#mask").hide(); $("#edit").hide(); var text = $(".text").val(); me.parent().find("p").html(text + '修改'); });

      https://jsfiddle.net/v5hnhfam/

        阿神

        多谢楼上几位哥哥在端午放假期间能回答我的问题,非常感谢你们,每个答案我都给我很多启示,谢谢!!!
        但答案只能采纳一个,我看了一下几位哥哥的声望,我就采纳了 噢漏 的答案。谢谢!

          Neueste Downloads
          Mehr>
          Web-Effekte
          Quellcode der Website
          Website-Materialien
          Frontend-Vorlage
          Über uns Haftungsausschluss Sitemap
          Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!