将jQuery函数应用于每个新创建的(动态)元素

时间:2015-04-04 22:19:29

标签: jquery html

我有一个按钮,可以创建一个具有唯一textarea的动态id字段。每次创建一个新元素时,我都希望jQuery在这些动态textarea字段上触发。

我尝试了.on('click')方法,它不会在动态元素上运行jQuery,除非生成它们的按钮被按下两次。所以这不会起作用。其次,当我创建第二个动态textarea字段时,它根本不起作用,即使我单击按钮两次。

    jQuery('button').on('click', function() {
        var dynamicElement = jQuery('.parentclass').find('textarea').attr('id');

//countChar is part of a function not displayed here (works fine).

    countChar(jQuery('#'+dynamicElement).get(0));

//This code below never seems to apply itself to any dynamic textarea fields except for
//the first one. It needs to apply itself to all of them and trigger each time a new
//dynamic textarea field is created.

    jQuery('#'+dynamicElement).keyup(function() {
        countChar(this);
    })

    });

我将如何开展这项工作?

谢谢。


修改

这是函数countChar(它添加了一个字符计数器并限制了字符)。

功能

function countChar(val) {
    var allowed_length = 700; // character count limit here
    var len = val.value.length;
    if (len >= allowed_length) {
        val.value = val.value.substring(0, allowed_length);
        jQuery(".chars[data-textarea="+val.id+"]").text(0);
    } else {
        jQuery(".chars[data-textarea="+val.id+"]").text(allowed_length - len);
    }
}

HTML

<tr class="parentclass">

<td class="label">
    <label>
        Custom Title
    </label>
    <span class="field-instructions">
        Please enter the content of this field.
        Remaining: <span class="chars" data-textarea="dynamic-textarea-1"></span>
    </span>
</td>

<td>
    <div class="inner">
        <textarea rows="4" id="dynamic-textarea-1" class="textarea"></textarea>
    </div>
</td>

1 个答案:

答案 0 :(得分:0)

您需要做的是设置变量ex。 var x = document.getElementById(&#34;元素名称&#34;);然后更改你想要的任何属性,任何其他事件都需要在click事件之外,因此它可以自行触发。希望这有帮助