定义在twitter bootstrap插件中返回数据的公共方法

时间:2012-11-26 11:16:51

标签: javascript jquery jquery-plugins twitter-bootstrap

如何在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类和插件应用

1 个答案:

答案 0 :(得分:0)

您希望将查询放入($('button.general').button().getTextLabel())的表单将在所选的每个元素上应用插件,因此我不知道它会有多大用处。此外,似乎没有必要破解插件源来添加此功能,因为你必须检查元素是否还有Button数据。

相反,我建议采取以下措施:

的JavaScript

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"]