JQuery检查DIV内容是否有变化

时间:2013-04-10 06:57:21

标签: jquery html

我想检查DIV内容,当div的内容发生变化时,我会发现存在表单字段。我正在尝试使用此代码,但它没有响应:

$.fn.exists = function(){return this.length>0;}
$("div.provider_name").live("change",function(){
    if ($('input[id=checkout_provider_checkout_moneyorder]').exists)
    {
        alert('Input field exist');
    }
});

输入字段显示动态,这就是为什么我要检查这个特定字段是否存在的原因。

1 个答案:

答案 0 :(得分:2)

更改事件不适用于所有元素 - 因此即使div元素的内容发生更改,它也不会触发。

更改事件在表单元素上可用。

看起来您需要在特定表单元素可用时解决,您可以使用间隔检查:

var checkForInputTimer;
var checkForInput = function () {
    if ($("#checkout_provider_checkout_moneyorder").length > 0) {
        window.clearInterval(checkForInputTimer);
        alert("Do your processing here");
    }
};

checkForInputTimer = window.setInterval(checkForInput, 2000);

在这个例子中,我只是通过id检查元素,这是最有效的搜索,因为id必须是唯一的。

您还可以创建自定义事件,但您必须记住在用于更新div元素的任何代码中触发事件。我为此创建了JS Fiddle

$('div.provider_name').bind('contentChanged', function(event, data) {
    if ($('#checkout_provider_checkout_moneyorder').length > 0) {
        alert('Do your processing here');
    }
});

无论您在何处更新div,都会触发此事件:

$('div.provider_name').html('<input type="text" name="example" id="checkout_provider_checkout_moneyorder" value="example">')
    .triggerHandler('contentChanged');
相关问题