链.on()与.not()从对象中删除不需要的元素
问题描述:
我有一个web窗体,我将beforeunload事件绑定到窗口,以检测对的任何更改,除了我输入的内容不需要包含。例如,我不需要绑定beforeunload事件的输入。它应该只绑定输入,这些输入会在离开窗口导航时影响失去更改。链.on()与.not()从对象中删除不需要的元素
这是当前绑定我有:
formChanged = false;
$('#main-form').on('change.form_change', 'input:not(.leave-change-allowed), textarea:not(.leave-change-allowed), select:not(.leave-change-allowed)', function()
{
if(!formChanged)
{
formChanged = true;
$(window).bind('beforeunload', function()
{
if(formChanged)
{
return 'Are you sure you want to navigate away from this window, you will lose unsaved changes.';
}
});
}
else
{
$(this).unbind('change.form_change');
}
});
正如你可以看到我已经包含:not(.leave-change-allowed)
到在选择器中的元素,以逗号分隔以选择的形式的元素。虽然,我不想将not()
添加到选择器,因为可能会有几个选择器我想添加到not()
,但我需要应用到每个输入格式input
,textarea
和select
。请记住,这些元素是动态的,所以我用.on()
而非.change()
。
我怎样才能链.not()
功能与动态元素?所以我一直选择完整,并通过在.not()
功能的所有不必要的元素?
答
检查目标函数内部的类:
formChanged = false;
$('#main-form').on('change.form_change', 'input, textarea, select', function(e) {
if(! (formChanged || $(e.target).is('.leave-change-allowed'))) {
formChanged = true;
$(window).on('beforeunload', function() {
if(formChanged) {
return 'Are you sure you want to navigate away from this window, you will lose unsaved changes.';
}
});
} else {
$(this).off('change.form_change');
}
});
这很好地工作,我已经添加在'if'声明缺少支架。干杯。 – MacMac 2013-03-20 22:25:41
不客气? – adeneo 2013-03-20 22:26:38
这是一个cookie? – MacMac 2013-03-20 22:27:24