jQuery插件返回this.each并为每个对象添加函数属性
jQuery Plugin Return this.each and add function property to each object?
是否可以创建一个jQuery插件,为多个匹配返回this.each,从而允许我为每个循环中的每个对象添加一个函数属性?我想稍后直接从对象中调用此函数。
例如,下面是我尝试做的事情的简化版本:
(function ( $ ) {
$.fn.roflcopter = function( options ) {
return this.each(function() {
$(this).addClass('lol');
$(this).getMyValue = function(e){
return returnMyFilteredValue($(this));
}
});
function returnMyFilteredValue(elem){
return $(elem).val().replace("cat", "dog");
}
};
}( jQuery ));
然后我想在一个文档中。ready函数调用这个:
$("input.coolStuff").roflcopter();
var value = $("input.coolStuff").first().getMyValue();
这可能吗?我收到一个错误,指出getMyValue不是一个函数。
小改动:只需将getMyValue放在"this"上,而不是放在$(this)上,然后通过访问它
$("input.coolStuff").first()[0].getMyValue()
您可以使用.data()
在元素中存储和调用函数;Function.prototype.bind()
在getMyValue
处在.each()
内将this
设置为$(this)
$(function() {
(function($) {
$.fn.roflcopter = function(options) {
return this.each(function() {
$(this).addClass("lol");
function getMyValue(e) {
return returnMyFilteredValue(this);
};
$(this).data().getMyValue = getMyValue.bind($(this));
});
function returnMyFilteredValue(elem) {
return elem.val(function(index, val) {
return val.replace("cat", "dog");
})
}
};
}(jQuery));
$("input.coolStuff").roflcopter();
var value = $("input.coolStuff").first().data().getMyValue();
console.log(value, value.val())
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<input class="coolStuff" value="cat" />
<input class="coolStuff" value="cat" />
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Meteor-将选定窗体中的对象添加到集合中
- 在play2框架中向json对象添加下拉列表项
- 如何在javascript上向数组的对象添加新元素
- JSON到对象数组,并向每个对象添加项
- 如何将一个对象添加到每个对象数组中
- 向Angular作用域对象添加对象数组——TypeError
- CoffeeScript将对象添加到数组中
- 如何从Addon SDK向选项卡对象添加进度侦听器
- 使用ja将对象添加到HTML画布中
- 向通过ReST JSON调用生成的Angular Javascript对象添加方法
- 将新对象添加到本地存储
- 为什么可以'我们在函数体中为函数对象添加属性,就像在javascript中为对象文字添加属性一样
- 使用游标循环将JS对象添加到数组中
- 向调用全局javascript函数的对象添加处理程序
- 将另一个文件中的对象添加到单独文件中的阵列中
- 将对象添加到数组中
- 为新对象添加函数,将对象添加到数组中.理解困难'这'关键字
- sequelize为找到的对象添加值
- 向对象添加新方法和值,同时避免重复