【问题标题】:Jquery ChangeEvent global variableJquery ChangeEvent 全局变量
【发布时间】: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 }
  • 请移植您的表单标记。

标签: javascript jquery events jquery-mobile global-variables


【解决方案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');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多