私はオートコンプリートを使用するタグプラグインを作成しようとしています(jquery ui:https://jqueryui.com/autocomplete/)。ドロップダウンリストの値をクリックすると、それを削除するために十字でスパンが作成されます。Jqueryプラグインで新しいクリックイベントを追加
私の質問は、新しい作成スパンのクロスサインのクリックイベントを自分のプラグインに登録する方法です。
/**
* Tags Autocomplete
*
* Create tags through autocompletion
*/
(function($)
{
'use strict';
$.fn.tagsAutocomplete = function(options)
{
// defaults
var defaults = {
autocomplete : {
source : "",
test_data: ["test", "testing", "tester", "John DOe"]
},
tags : {
class : "tag"
}
};
// selected element
var elm = this;
// extend the options
var o = $.extend(true, defaults, options);
// Start autocomplete
$(elm).autocomplete({
minLength: 0,
source: o.autocomplete.test_data,
select: function(event, ui) {
// add tag to DOM, before the input with a remove_tag
$(this).before('<span class="tag tag-green tag-new">'+ui.item.value+'' +
'<span class="remove_tag"></span>' +
'</span>');
// clear input
this.value = "";
// return false
return false;
}
});
/**
* Remove span after clicking the cross
* @param obj
*/
function removeSpan(obj){
alert('clicks works');
//obj.closest(o.tags.class).remove();
// focus input
//obj.focus();
}
// bind events
this.bind("click.remove_tag", removeSpan);
// return elm for chaining
return elm;
};
})(jQuery);
私はこれを試しました:this.bind( "click.remove_tag"、removeSpan); しかし、それは動作しません。
は、どのように私はあなたがnamepacedイベントを使用して、あなたがクラスをターゲットにしていないしているクラス名remove_tag
クリックは機能しますが、どのようにクリックしたDOM要素を取得できますか? \t \t function removeSpan(obj){log($(this).text());} //動作しない – Bham
*(編集済みの回答)* – adeneo