Jquery ChangeEvent 全局变量

Posted

技术标签:

【中文标题】Jquery ChangeEvent 全局变量【英文标题】:Jquery ChangeEvent global variable 【发布时间】:2013-03-24 22:52:16 【问题描述】:

我有这个代码。

    var anyChange = false;

    function init()

    $('.saveSettingsEvent').bind("change",function()
          anyChange  = true ;   
        
     );
    

...

 onload='init()

事件被触发,但变量 (anyChange) 保持为 'true' ,仅在匿名函数内部。

我用:

jQuery 1.8.2

JqueryMobile 1.2

我哪里错了? 谢谢!

【问题讨论】:

如何检查变量没有从外部改变? 对你下一个问题的一点建议,你应该提供更多的信息和代码然后这个。你在哪里检查的?你是怎么检查的? if(anyChange != false ) // Do Somthing if(anyChange == true) // Do Somthing 请移植您的表单标记。 【参考方案1】:

我为你写了一个例子。

var anyChange = false;

$(function() 
    $('.saveSettingsEvent').bind('change',function()
        anyChange  = true ;   
    );
    $('button').click(function() 
        alert(anyChange);
    );
);

http://jsfiddle.net/YuUVd/2/

它按预期工作。 anyChange 设置为 true 并保持为 true。

所以,如果您需要更多帮助,我们需要更多信息。

我假设,其他一些代码将您的变量设置回 false 或者您的更改事件永远不会触发...

【讨论】:

我在表单中使用了这段代码。所有输入、选择和复选框都有这个类(“saveSettingsEvent”)。我试图更改“anyChange”的名称......但仍然无法正常工作。然后我尝试了您的代码,但仍然无法正常工作。我看到的唯一解决方案是使用自定义“attr”或“tag”插入 DOM 树 请记住,当更改事件被触发时,有时您还需要单击或键入。在输入上,当您离开时会触发更改事件...【参考方案2】:

真正的解决方案

(待定)

解决方法

我在正文末尾使用自定义属性制作了一个自定义标签。

当事件触发时,将属性res

设置为True
$(function() 
    $('.saveSettingsEvent').bind('change',function()
        $("#anychange").attr('res','true');  
    );

);

如果

var resToSave = $("#anychange").attr('res');
if(resToSave == 'true')
   // Do Something
   ...
   // Reset attr
   $("#anychange").attr('res','false');

【讨论】:

以上是关于Jquery ChangeEvent 全局变量的主要内容,如果未能解决你的问题,请参考以下文章

jquery全局变量---同步请求设置

jquery局部变量和全局变量的错误

将API数据存储在全局变量jquery中

jQuery Ajax Post - 无法使用回调函数设置全局变量?

JQuery 插件,Javascript - 如何仅为 JQuery 插件全局变量或 json 对象创建并在函数级别更改此(变量、对象)

在href参数中使用jQuery全局变量