将 jQuery 的 .val() 方法扩展到非输入元素
Extend jQuery's .val() method to non-input elements
我正在编写一个自定义jquery插件,它基本上复制了输入的功能。我可以解释为什么,但说实话,解释很长,我认为这与问题无关。
当我尝试将jQuery的.val()方法扩展到我的自定义jquery插件时,麻烦就来了。这是我尝试过的:
$.fn.custom_text_input = function(options){
return this.each(function(){
var custom_text_input = new CustomTextInput(options, this)
$(this)[0].val = function(){
alert('something useful')
}
})
}
我尝试了其他一些变体,但都无济于事。如果有人有任何可行的想法,我将非常感谢你的智慧!
谢谢!
要覆盖$.val()
方法,您需要执行类似 $.fn.val = function () {...}
的操作。这是一个演示:http://jsfiddle.net/CRRP5。我建议将旧的.val()
方法保存在变量中,以便在常规表单输入上调用.val()
时可以使用它。
要
让它工作的唯一方法是扩展 jQuery 的 val()
方法的结果。
$(function(){
$.fn.oldVal = $.fn.val
$.fn.val = function(value){
//I'm assuming here that you're setting/getting a data value
//on the object to keep track of it's "custom value"
if(value && $(this).data('custom-input-value')){
return $(this).data('custom-input-value', value);
}
else if(value = $(this).data('custom-input-value')){
return value;
}else{
return value ? $(this).oldVal(value) : $(this).oldVal();
}
}
})
这可能对你有用:p
这是一个工作正常的jsfiddle:http://jsfiddle.net/Z4c6d/
相关文章:
- 选中单选框时将属性添加到输入字段
- php&js-将电子邮件添加到输入文本中
- 单击下拉菜单时,将文本粘贴到输入框中
- 动态添加id's到输入字段
- AngularJS-将数组值绑定到输入ngModel
- 带有嵌入脚本的SVG可扩展到浏览器的可用空间
- 通过javascript解析从按钮到输入的值.(嘟嘟的弹出窗口)
- 如何将可拖动的谷歌地图标记的地址传递到输入字段中
- Jquery:将文本附加到输入中
- Selectize.js:如何将数据库中已经选择的标签预加载到输入字段(Meteor&MongoDB/JSON)
- Javascript:如何使自动建议的结果在单击时移动到输入字段中
- 使用 Jquery 将 Span with Class 添加到输入标记中
- 使用jquery将属性附加到输入元素
- Input.checked创建需要绑定到输入的Dynamic元素
- Make:如果父元素溢出,after元素将扩展到全宽
- 将所选(单击)选项传递到输入框
- 将值从函数传递到输入字段
- 将从服务器获取的数据加载到输入文本表单中
- Chrome扩展:将下载的文件移动到输入字段
- 将 jQuery 的 .val() 方法扩展到非输入元素