如何在twitter bootstrap插件中定义返回数据的公共方法? 例如,我有这个片段:
var Button = function (element, options) {
this.$element = $(element)
this.options = $.extend({}, $.fn.button.defaults, options)
}
/* BUTTON PLUGIN DEFINITION
* ======================== */
$.fn.button = function (option) {
return this.each(function () {
var $this = $(this)
, data = $this.data('button')
, options = typeof option == 'object' && option
if (!data) $this.data('button', (data = new Button(this, options)))
if (option == 'toggle') data.toggle()
else if (option) data.setState(option)
})
}
我想要这样的东西:
var text = $('button.general').button().getTextLabel();
它将返回每个按钮的文本数组,其中包含.general类和插件应用
答案 0 :(得分:0)
您希望将查询放入($('button.general').button().getTextLabel()
)的表单将在所选的每个元素上应用插件,因此我不知道它会有多大用处。此外,似乎没有必要破解插件源来添加此功能,因为你必须检查元素是否还有Button数据。
相反,我建议采取以下措施:
var text = $('button.general')
.filter(function () {
return $(this).data('button');
})
.map(function (i, el) {
return $(el).text();
})
例如,在Bootstrap Documentation页面上运行上面的选项.btn
而不是button.general
,产生数组
["Left", "Middle", "Right", "Left", "Middle", "Right"]