Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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
Javascript jQuery:使用var快捷方式分配数据以及如何链接函数以在加载时运行,然后单击_Javascript_Jquery - Fatal编程技术网

Javascript jQuery:使用var快捷方式分配数据以及如何链接函数以在加载时运行,然后单击

Javascript jQuery:使用var快捷方式分配数据以及如何链接函数以在加载时运行,然后单击,javascript,jquery,Javascript,Jquery,我有一个由两部分组成的问题 第一:如果(!last){,我可以使用设置的last变量来更新后面一行的值吗?例如,类似last=size; var j$ = jQuery.noConflict(); function updateCount() { var self = j$(this), last = self.data('last'), size = self.val().length,

我有一个由两部分组成的问题

第一:如果(!last){,我可以使用设置的
last
变量来更新
后面一行的值吗?例如,类似
last=size;

    var j$ = jQuery.noConflict();

    function updateCount() {
        var self = j$(this),
            last = self.data('last'),
            size = self.val().length,
            span = j$('.currentCount');

        if (!last) {
            self.data('last', size);
        } else if (last != size) {
            span.text(size);
            self.data('last', size);
        }
    }

    j$('textarea[id$=textBody]').on('propertychange change click keyup input paste', updateCount);
其次,我是否可以将我的
.on('propertychange…
行链接到('propertychange…
行),以便在加载脚本后立即运行
updateCount

不,您不能简单地使用变量赋值,因为jQuery中没有数据绑定。因此更新
last
变量将永远不会更新jQuery对象的
data last

问题2:

这就是我过去常做的事:

j$('textarea[id$=textBody]').on('propertychange change ...', updateCount).change();
其中
change()
自动触发函数。

问题1:

不,您不能简单地使用变量赋值,因为jQuery中没有数据绑定。因此更新
last
变量将永远不会更新jQuery对象的
data last

问题2:

这就是我过去常做的事:

j$('textarea[id$=textBody]').on('propertychange change ...', updateCount).change();

其中
change()
会自动触发该函数。

对于Q1:不,你不能。如果你想让数据绑定工作,你可以尝试AngularJS,在那里UI和模型之间可以进行双向数据绑定

问题2:我的解决方案是使用立即函数

 $('textarea[id$=textBody]').on('propertychange change click keyup input paste', (function(){
    updateCount();

    return updateCount;
    }()));

对于Q1:不,你不能。如果你想让数据绑定工作,你可以尝试AngularJS,其中UI和模型之间的双向数据绑定是可能的

问题2:我的解决方案是使用立即函数

 $('textarea[id$=textBody]').on('propertychange change click keyup input paste', (function(){
    updateCount();

    return updateCount;
    }()));

last
变量在
self.data('last')
中有一个值的副本,它不是指针,因此必须执行以下操作:

last = size;
self.data('last', last);
对于第二个问题,您可以触发事件,也可以只调用函数:

j$('textarea[id$=textBody]').trigger('propertychange');
// or
j$('textarea[id$=textBody]').each(updateCount);

last
变量在
self.data('last')
中有一个值的副本,它不是指针,因此必须执行以下操作:

last = size;
self.data('last', last);
对于第二个问题,您可以触发事件,也可以只调用函数:

j$('textarea[id$=textBody]').trigger('propertychange');
// or
j$('textarea[id$=textBody]').each(updateCount);