将一个时间事件附加到动态添加的元素

时间:2014-07-09 10:33:06

标签: javascript jquery javascript-events

我有一个网页,其中有一个按钮,当点击按钮时,文本框被添加到DIV。这是我正在使用的类似代码:

HTML

<button class="addText">Add Textbox</button>
<div class="textCont">
</div>

的JavaScript

$(document).on("click", ".addText", function() {
    var textarea = $("<textarea/>", {class: "newText"});
    $(".textCont").append(textarea);
});

$(document).one("focus", ".newText", function() {
    alert("Great");
});

小提琴:http://jsfiddle.net/ErRohitAgg/g3A7T/

我要做的是显示添加的每个文本框的第一个焦点的警报。但是,焦点事件只执行一次,而不是每个文本框执行一次。

根据我需要的功能,该事件是否有任何行为?

2 个答案:

答案 0 :(得分:2)

将事件处理程序添加到每个textarea

$(document).on("click", ".addText", function() {
    $("<textarea/>", {
        'class': 'newText',
        one    : {
            focus: function() {
                alert("Great");
            }
        }    
    }).appendTo(".textCont");
});

FIDDLE

答案 1 :(得分:1)

我宁愿通过在第一个焦点上添加newclass来实现它:

$(document).on("focus", ".newText", function() {
if(!$(this).hasClass('focused')){
  $(this).addClass('focused')
  alert("Great");
}});

<强> Working Demo