Javascript jQuery:使用var快捷方式分配数据以及如何链接函数以在加载时运行,然后单击
我有一个由两部分组成的问题 第一:如果(!last){,我可以使用设置的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=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);