gpt4 book ai didi

javascript - jQuery 限制插件问题

转载 作者:行者123 更新时间:2023-11-28 02:40:09 35 4
gpt4 key购买 nike

此问题引用this jQuery limit plugin 。来源如下:

(function($){ 
$.fn.extend({
limit: function(limit,element) {
var interval, f;
var self = $(this);

$(this).focus(function(){
interval = window.setInterval(substring,100);
});
$(this).blur(function(){
clearInterval(interval);
substring();
});

substringFunction = "function substring(){ var val = $(self).val();var length = val.length;if(length > limit){$(self).val($(self).val().substring(0,limit));}";

if(typeof element != 'undefined')
substringFunction += "if($(element).html() != limit-length){$(element).html((limit-length<=0)?'0':limit-length);}"

substringFunction += "}";
eval(substringFunction);
substring();
}
});
})(jQuery);

现在我可能只是在这里挑剔......但也许我错过了一些东西。以下是我的问题/疑虑:

1) 在字符串中创建子字符串函数然后对其进行评估的目的是什么?仔细一看,如果函数正常初始化,扩展似乎可以完美地工作。

2) 我不喜欢它使用 setInterval 来执行子字符串函数。 keypress 或类似事件不是更好、更合乎逻辑的方法吗?另外,我相信这是导致(或至少启用)v1.2 change log 中引用的“闪烁文本”错误的原因。 (不,它尚未修复)。

3) 为什么要初始化变量f?它从未被使用或引用。

4) 另外,这不是一个可链接的方法,但作为 jQuery 扩展,它应该是。我不太熟悉编写 jQuery 扩展,但这可以通过方法末尾的 return this; 来完成,对吗?

看起来这只是一个糟糕的编程案例,但我想得到外部意见。

最佳答案

1)我同意。看来他对我来说不理解闭包。

2) 很难准确预测哪些事件可能会更改文本框的内容。按键是显而易见的,但也许鼠标事件也可以做到这一点。它还可以通过其他 Javascript 函数进行更新。

3)我有几个猜测:a)当他试图让闭包工作时,他使用它来保存回调函数,并且当他切换到 eval kludge 时没有删除声明; b) 它应该保存 substring 函数字符串,但他在赋值时犯了一个错误,将其称为 substringFunction(请注意,他忘记了那里的 var 声明)。

4)正确。

仅仅因为某人将其代码发布到网站并不意味着他们是专家。

关于javascript - jQuery 限制插件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12791286/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com