jQuery を使用してウィジェットをボタンに追加する関数をバインドします。
$('#slide_out_bar button').click(function(){
test();
});
function test(){
gridster.add_widget("<li><h1>Test</h1></li>");
}
ボタンをクリックするtest()
と呼び出されますが、エラーが発生します: Type TypeError: $el is undefined
、コンソールに出力され、gridster
要素にウィジェットが追加されません。
test()
しかし、HTML ファイルのスクリプト タグから単純に呼び出すと、問題なく動作します。
<script type="text/javascript">
test();
</script>
なぜこれが起こるのか本当にわかりません。誰かアイデアはありますか?
もちろん、私のコードにはこれ以外にもありますが、これらが最も関連性の高いセクションだと思いました。私のコードの他の部分が何らかの形で影響gridster
を与える可能性があると思われる場合は、さらに投稿します。
編集:これが私のjavascriptコードのすべてです。
var gridster;
function initiate_gridster(){
$(".gridster ul").gridster({
max_cols: 4,
max_rows: 3,
min_cols: 4,
widget_margins: [6, 6],
widget_base_dimensions: [300, 300]
});
gridster = $(".gridster ul").gridster().data('gridster');
gridster.$el.on('click', '.delete',function(event){
remove_widget($(this));
});
return gridster;
}
function remove_widget(widget_elem){
var widget = widget_elem.parents('li');
var data_id = widget[0].attributes['data-id']
if(data_id == null){
console.log("Cannot remove widget. Widget lacks 'data-id' attribute.");
return;
}
var id = data_id.value
var res = gridster.remove_widget(widget);
$.post('remove_widget',{data_id: id}, function(data){
console.log("Removed widget: " + id + "=" + data.message);
});
}
function test(){
console.log("TEST");
var grid = initiate_gridster();
grid.add_widget("<li data-id='1'><div class='delete'>|||<div><h1 id='test' >Test</h1></li>",1,1);
}