当我调用这个自定义函数时
$.fn.inputBoxHelper = function () {
var args = arguments[0] || {};
var matchingElem = $.grep(this, function (e) { return $(e).val() == $(e).attr('title'); });
$(matchingElem).addClass(args.className);
this.bind({
focus: function(){
if ($(this).val().trim() == $(this).attr('title')) { $(this).val(emptyString).removeClass('gray'); }
},
blur: function(){
if ($(this).val().trim() == emptyString) { $(this).val($(this).attr('title')).addClass('gray'); }
}
});
return this;
}
Run Code Online (Sandbox Code Playgroud)
像这样
$('input:text').inputBoxHelper({ className: 'gray' });
Run Code Online (Sandbox Code Playgroud)
当我打电话给它时,它给了我错误
$("input:text,input:checkbox").inputBoxHelper is not a function
file:///D:/repository/scripts/script_tests/test.js
Line 20
Run Code Online (Sandbox Code Playgroud)
即使我将功能更改为just
$.fn.inputBoxHelper = function () {return this;}
Run Code Online (Sandbox Code Playgroud)
它做了同样的事情.它似乎运行正常并且正常工作,因为所有功能都在输入框上工作,但是会出错.有人有主意吗?
sho*_*ger 15
检查您是否未将jQuery加载到页面中两次.一些插件或插件库喜欢包含jQuery.因此,它可以覆盖现有的jQuery实例,$并jQuery使用new - fresh实例覆盖和变量 - 导致现有插件未定义.在定义jQuery时,插件会添加到jQuery的原型中.因此,如果您销毁该对象的唯一实例,则原型将重置为其原始形式.因此,这些插件不再是原型的一部分.
此外,它可能没什么,JSLint报告你在你发布的那个函数定义的最后一行丢失了一个分号.它应该是:
$.fn.inputBoxHelper = function () {
var args = arguments[0] || {};
var matchingElem = $.grep(this, function (e) { return $(e).val() == $(e).attr('title'); });
$(matchingElem).addClass(args.className);
this.bind({
focus: function(){
if ($(this).val().trim() == $(this).attr('title')) { $(this).val(emptyString).removeClass('gray'); }
},
blur: function(){
if ($(this).val().trim() == emptyString) { $(this).val($(this).attr('title')).addClass('gray'); }
}
});
return this;
};
Run Code Online (Sandbox Code Playgroud)
它总是通过JSLint的运行所有的JavaScript的一个好主意.它可以帮助您找到您可能花费数小时寻找的东西.