jquery 检测动态内容上的事件(如点击

1qczuiv0  于 2023-01-25  发布在  jQuery
关注(0)|答案(5)|浏览(125)

如何检测点击了哪个动态按钮?

***注意:***#dCalc元素是动态添加的...

<!-- STATIC -->
<div id="dBlock">

  <!-- ADDED DYNAMICALLY -->
  <div id="dCalc">
    <input id="firstNumber" type="text" maxlength="3" />
    <input id="secondNumber" type="text" maxlength="3" />
    <input id="btn1" type="button" value="Add" />
    <input id="btn2" type="button" value="Subtract" />
    <input id="btn3" type="button" value="Multiply" />
    <input id="btn4" type="button" value="Divide" />
  </div>

</div>
uurity8g

uurity8g1#

$("input").click(function(e){
    var idClicked = e.target.id;
});
hc2pp10m

hc2pp10m2#

$(function() {
    $('input[type="button"]').click(function() { alert('You clicked button with ID:' + this.id); });
});
vd8tlhqk

vd8tlhqk3#

由于块是动态添加的,您可以尝试:

jQuery( document).delegate( "#dCalc input[type='button']", "click",
    function(e){
    var inputId = this.id;
    console.log( inputId );
    }
);

演示http://jsfiddle.net/yDNWc/

bvjveswy

bvjveswy4#

jQuery可以绑定到单个input/按钮,也可以绑定到表单中的所有按钮。一旦单击了某个按钮,它将返回所单击按钮的对象。在那里,您可以检查属性,如value...

$('#dCalc input[type="button"]').click(function(e) {
    // 'this' Returns the button clicked:
    // <input id="btn1" type="button" value="Add">
    // You can bling this to get the jQuery object of the button clicked
    // e.g.: $(this).attr('id'); to get the ID: #btn1
    console.log(this);

    // Returns the click event object of the button clicked.
    console.log(e);
});
2vuwiymt

2vuwiymt5#

检测动态创建元素上的事件

前面有两个例子,jQuery和 * vanilla*JavaScript

jQuery

对委托事件使用. on()方法,该方法遵循以下语法:

$("staticParentSelector").on("eventName", "dynamicChildSelector", handlerFn);

示例:
x一个一个一个一个x一个一个二个x

JavaScript语言

在 * vanilla * JavaScript中也可以像下面这样实现,不同之处在于JS没有 * delegateTarget * 的概念(这是他们专有的Event对象上的jQuery属性),因此进行了轻微的修改:
一个三个三个一个
正如您所看到的,上面的实现都不单独依赖于Event.target元素 * 本身 *,原因是如果我们在按钮内有一个图标(如:<button id="add" type="button">Add <i class="icon-plus"></i></button>),如果点击直接落在图标上,Event.target将最终成为图标,而不是按钮元素-我们可能会错过检索所需的数据,如特定的按钮ID等,导致应用程序逻辑中断。

相关问题