Jquery插件调用方法

时间:2011-09-24 12:41:51

标签: javascript jquery jquery-plugins methods call

您好我安装了这个小插件:

    (function($) {
  $.fn.tagfield = function(options) {
    if (options && options.add) {
      this.each(function(i, elem) {
        add_tags(elem, options.add);
      });
    } if (options && options.remove) {
      this.each(function(i, elem) {
        remove_tags(elem, options.add);
      });
    } else {
      this.each(function(i, elem) {
        var initial_tags = $(elem).val();
        $(elem).val('');

        tagfield(this, $(elem));

        $(initial_tags.split(',')).each(function(i, v) {
          v = $.trim(v);
          if (v !== '') add_tags(elem, v);
        })
      });
    }
  };

  var KEYS = {
    "enter": "\r".charCodeAt(0),
    "space": " ".charCodeAt(0),
    "comma": 188,
    "backspace": 8
  };

  var tagfield_id_for = function(real_input) {
    return $(real_input).attr('id') + '_tagfield';
  };

  var add_tags = function(real_input, text) {
    remove_tags(real_input, text);
    var tag = $('<span class="tag">').append('<span class="text">' + text +'</span>'),
        close = $('<a class="close" href="#">X</a>');
    close.click(function(e) {
      remove_tags(real_input, text);
    });
    tag.append(close);
    $('#' + tagfield_id_for(real_input) + " .tags").append(tag);

    real_input = $(real_input);
    real_input.val(($.trim(real_input.val()) === '' ? [] : real_input.val().split(',')).concat([text]).join(','));
  };

  var remove_tags = function(real_input, text) {
    $('#' + tagfield_id_for(real_input) + " .tags .tag").each(function(i, v) {
      v = $(v);
      if (v.find('.text').html() === text) {
        v.remove();
        real_input = $(real_input);

        var tags = $(real_input.val().split(',')).filter(function(i, v) {
          return v !== text;
        });
        real_input.val(Array.prototype.join.call(tags));
      }
    });
  };

  var tagfield = function(real_input, elem) {
    var tagfield = $('<div class="tagfield">').attr('id', tagfield_id_for(real_input)),
        input = $('<input type="text"/>'),
        buffer = $('<span class="buffer">'),
        tags   = $('<span class="tags">');
    tagfield.append(tags);
    tagfield.append(buffer);
    tagfield.append(input);

    tagfield.click(function(e) {
      input.focus();
    });

    var check_add_tag = function() {
      if (buffer.html()) {
        var tag_text = buffer.html();
        buffer.html('');
        add_tags(real_input, tag_text);
      }
    };

    var add_tag = function(text) {
    };

    input.keydown(function(e) {
      if (e.which === KEYS.enter || e.which === KEYS.space || e.which === KEYS.comma) {
        e.preventDefault();
        check_add_tag();
      }

      if (e.which === KEYS.backspace) {
        if (buffer.html() === "") {
          remove_tags(real_input, tagfield.find('.tag').last().find('.text').html());
        } else {
          var s = buffer.html();
          buffer.html(s.slice(0, s.length-1));
        }
      }
    });

    input.blur(check_add_tag);

    input.keyup(function(e) {
      buffer.append(input.val());
      input.val('');
    });

    $(real_input).hide().after(tagfield);
  };

})(jQuery);

有没有人可以告诉我如何调用方法add_tags()和remove_tags()?

感谢

1 个答案:

答案 0 :(得分:1)

$("selector").tagfield({remove:someobject}); 
$("selector").tagfield({add:someobject});

但是我认为“删除”的东西不会起作用,因为fn.tagfield中的第二个“if”会监视“options.remove”,但会删除“options.add”......