Я пишу плагин jQuery, который в некоторых случаях хранит некоторые данные.
Я хотел бы написать это очень гибким способом, где я могу изменить входной параметр для получения некоторого значениякоторые были сохранены плагином.
Объяснение:
Когда я вызываю $("#any").myPlugin()
, мой плагин инициализирует создание div
и некоторых a
внутри.Нажатие на a
сохранит его .index()
с использованием метода .data()
.Если я позвоню $("#any").myPlugin("getSelection")
, то я хотел бы получить значение, хранящееся в .data()
.
То, что я пробовал:
(function ($) {
$.fn.myPlugin = function (action) {
if (action == null) action = "initialize";
return this.each(function ($this) {
$this = $(this);
if (action == "initialize") {
$this.html('<div></div>');
var div = $("div", $this);
div.append('<a>A</a>').append('<a>B</a>').append('<a>C</a>');
div.children("a").each(function (i) {
$(this).click(function (event) {
// Here I store the index.
$this.data($(this).index());
event.preventDefault();
return false;
});
});
return $this;
} else if (action == "getSelection") {
// With this action, I tried to get the stored value.
return $this.data("selectedValue");
}
});
};
})(jQuery);
Простой вызовсоздайте элементы:
$("#someElement").myPlugin();
И здесь я попытался получить индекс без успеха:
alert($("#someElement").myPlugin("getSelection"));
Итак, можно ли сделать то, что я пытаюсь?