Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从其他函数获取jquery变量?_Jquery - Fatal编程技术网

如何从其他函数获取jquery变量?

如何从其他函数获取jquery变量?,jquery,Jquery,我在脚本顶部声明全局变量,如下所示 $(function(){ //Set button disabled var macaddr_obj;}); $('.item-macaddr').live('keyup', function(){ var vNode = $(this); var target = $(vNode).parents('tr'); var macAddr = $(target)

我在脚本顶部声明全局变量,如下所示

$(function(){
    //Set button disabled
    var macaddr_obj;});
$('.item-macaddr').live('keyup', function(){
        var vNode  = $(this);           
        var target = $(vNode).parents('tr');    
        var macAddr =  $(target).find('.item-macaddr').val();


        $.ajax({
            type: 'POST',
            url: '" . Yii::app()->createUrl('workorders/check_mac_addr') . "&macAddr=' + macAddr, 
            success: function (data) {                                      
                macaddr_obj = JSON.parse(data);


                if(macaddr_obj.check == 'true')
                {
                    $(target).find('.mac-duplicate-error').text(macaddr_obj.msg);
                    $(target).find('.mac-duplicate-error').addClass('errorMessage');

                    $('#sites-form input[type=submit]').attr('disabled', 'disabled');   
                }else {
                    $(target).find('.mac-duplicate-error').text('');                    
                }
            },          
        });

    });
我有一个ajax函数,如下所示

$(function(){
    //Set button disabled
    var macaddr_obj;});
$('.item-macaddr').live('keyup', function(){
        var vNode  = $(this);           
        var target = $(vNode).parents('tr');    
        var macAddr =  $(target).find('.item-macaddr').val();


        $.ajax({
            type: 'POST',
            url: '" . Yii::app()->createUrl('workorders/check_mac_addr') . "&macAddr=' + macAddr, 
            success: function (data) {                                      
                macaddr_obj = JSON.parse(data);


                if(macaddr_obj.check == 'true')
                {
                    $(target).find('.mac-duplicate-error').text(macaddr_obj.msg);
                    $(target).find('.mac-duplicate-error').addClass('errorMessage');

                    $('#sites-form input[type=submit]').attr('disabled', 'disabled');   
                }else {
                    $(target).find('.mac-duplicate-error').text('');                    
                }
            },          
        });

    });
当在其他文本框上键入时,调用函数“check\u item\u row”

这是使用macaddr_obj的函数

var check_item_row = function(target)
    {
        alert(macaddr_obj.check);
}

我想使用macaddr_obj的值。我该怎么做?

在全球范围内定义您的macaddr\u obj:

var macaddr_obj;

$(function(){
    //Set button disabled
...........

});

您只需将
check\u item\u行
函数声明与handlers声明一起放入
$(function(){…})
块中:

$(function(){
    //Set button disabled
    var macaddr_obj;

    ...

    var check_item_row = function(target) {
        alert(macaddr_obj.check);
    }

    ...

    // ".live()" is deprecated, use the following syntax with ".on()" :
    $(document).on('keyup', '.item-macaddr', function(){
        ...
    });

    $(document).on('keyup', '.item-ipaddr', function(){
        ...
    });

});
从代码中可以看出,
macaddr\u obj
只有在至少触发一个ajax调用并成功返回值后才会初始化

如果在此之前调用
check\u item\u row
,将触发
TypeError:macaddr\u obj未定义

避免这种情况的一种简单方法是使用默认值初始化对象:

var macaddr_obj = {};  // 'macaddr_obj.check' will return 'undefined',
                       // which probably fits your needs
 // or
var macaddr_obj = {check: false}; // 'macaddr_obj.check' will return 'false'

macaddr\u obj
实际上不是全局的。它是您的
ready
处理程序的本地。
macaddr\u obj
是它在其中声明的ready处理程序的本地从
var macaddr\u obj中删除
var
声明。这将使其具有全局范围(尽管让变量全局可用并不是一个真正的好做法),因为您使用ajax请求来填充
macaddr\u obj
无法保证在触发
项ipaddr
键控时填充值您的当前代码是否触发错误?如果是,哪一个?