大家好。请告诉我。我怎样才能做到当您点击“1 区”,然后点击“2 区”,然后点击“删除”时,警报只显示 2 区?按我的理解,点击region-delit的事件是累积的,不知道怎么清理。
$('body').on('click', '.region-edit', function() {
var text = $(this).text();
$('#del_btn').click(function() {
alert(text);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="uk-button uk-button-primary uk-button-small region-edit">Зона 1</button>
<button class="uk-button uk-button-primary uk-button-small region-edit">Зона 2</button>
<button class="uk-button uk-button-primary uk-button-small region-edit">Зона 3</button>
<button id="del_btn" class="uk-button uk-button-primary uk-button-small">Удалить</button>
按钮单击处理程序中代码的奇怪行为是Удалить合理的。发生的事情是您在 click handler 中
'.region-edit'创建了一个 button click handler Удалить。也就是你点击'.region-edit'的次数,你会创建这个代码块的次数:稍后将导致这样一个事实,即通过单击按钮Удалить,您将按照添加它们的顺序一遍又一遍地调用处理程序。为了使代码执行您在问题中指出的操作,例如,取出一个全局变量就足够了,如果您想将其存储在 JS 代码中,或者您可以将其存储在
hidden页面中,或者在属性方面,一般来说,有很多做法,如果我们拿出一个变量var text = "";来存储最后一次点击的文本,它会更直观'.region-edit'。至于button click handler Удалить,应该是从click handler on上取出来的
'.region-edit',放在旁边就好了,这样就有一份了。该构造
$(function() { ... });等同于以下内容:该构造
text && alert(text);等同于以下内容:在这种情况下,只有按下其中一个按钮
alert()后它才会工作。Зона #例子:
一些纯js和创意: