我应该如何编写我的插件来处理“实时”元素
How should i write my plugin for working with "live" elements?
我正在尝试编写自己的自动建议插件,使用jquery教程,应该使用动态创建的字段。但我没有成功。例如:
(function( $ ){
$.fn.dataSuggester = function(options) {
//By using $.extend we merge predefined options with passed in plugin
var options = $.extend({location:false, minlength:3, category:false}, options);
var stop_keys = [16, 17, 18, 19, 20, 33, 34, 35, 36, 37, 38, 39, 40, 44, 45, 46, 91, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 144];
return this.each(function() {
var o = $(this);
var suggestWrapper = $('<div class = "data-suggester suggest-box-wrapper">');
o.focus(function() {
console.log('aaaaa');
});
...............................
});
};
})( jQuery );
当我尝试像这样使用它时
<script type = "text/javascript">
$('.dataSuggest').dataSuggester();
</script>
它非常适合除动态创建:(以外的所有元素
当然,我可以用其他方式调用我的插件,例如
<script type = "text/javascript">
$('.dataSuggest').live('focus', function() {$(this).dataSuggester();});
</script>
,但我认为它没有我想要的那么漂亮。
当我尝试制作这样的东西时:
o.live('focus', function() {console.log('aaaa');});
它不起作用。请帮帮我吗?
.live
是一个事件绑定函数。 它的工作原理是获取包装集.dataSuggest
的描述,并在找到与该描述匹配的新元素时绑定指定的事件。
jQuery插件的工作原理是在一组已经选定的元素上执行一个函数。 这是两种完全不同的活动。
如果您希望插件使用.live
那么它需要在某个时候传递目标元素的描述(而不是一组包装的目标元素本身)。
考虑这样的事情:
// Plugin in use:
$.dataSuggest({ targetElements: '.customClass' });
// Plugin code:
$.fn.dataSuggester = function(options) {
$(options.targetElements).live('focus', function(e) {
// your code here...
});
};
请注意,该插件不是在包装的集合$('.whatever').dataSuggest()
上使用的,而是作为 jQuery 对象上的普通函数执行的。
相关文章:
- 如何使用jQuery实时检查元素是否为空
- 如何使用jQuery实时检查元素inset html
- colorbox与元素实时绑定'分组获胜'不起作用
- 实时更改元素宽度的任何方法
- 我想要输入文本元素中的实时更改事件
- document.getElementById 是否返回一个实时 dom 元素
- 在jQuery中优化实时元素的选择器
- 实时制作元素的动画
- 从webview中的实时网站中删除html元素
- 如何从视频元素中获取频率数据,并实时输入音频API
- 如何实时检测元素的更改
- 为什么我的jQuery代码不更新视频元素中加载的实时图像?
- 有实时元素调整大小的例子吗?
- jQuery重新绑定或新元素上的实时事件
- 用JavaScript实时更新网页元素时出错
- 在Firefox中,表单元素是实时更新的,但在IE中却没有
- 如何在javascript中拖动图像/元素时导致实时文本换行
- 实时更改元素 ID
- 我应该如何编写我的插件来处理“实时”元素
- 根据一天中的时间实时更新html元素内的内容