私のコードに期待しているのは次のとおりです。ボタンをクリックすると、ポインターの位置にオプションのメニューが表示されます。その後のクリックは、メニュー項目であろうとブラウザの他の場所であろうと、メニューを閉じる必要があります。メニュー項目をクリックするとメニューが閉じますが、他の場所をクリックすることはできません。コメントを外す$(document.body).one('click', function() {menu.remove()}
と、そもそもメニューが表示されず、クリックしてメニューを表示すると実際にメニューも閉じるように配置されているのではないかと思います。コードは次のとおりです。
render : function() {
this.$el.html(this.template(this.model.toJSON()));
var that = this;
if (this.model.attributes.memberType != 'OWNER') {
this.$('.memberTypeSelector').button({
icons : {
secondary : "ui-icon-triangle-1-s"
}
}).click(function(event) {
that.showPermissions(that.model, event, that);
});
...
},
showPermissions : function(member, event, view) {
var levels = ['ADMIN', 'CONTRIBUTOR', 'VIEWER'];
var menu = $('<ul>');
$.each(levels, function() {
if(member.attributes.memberType !== this) {
var item = $('<li>').appendTo(menu);
$('<a>').attr('href', '#').text(this).appendTo(item).click(function() {
menu.remove();
view.changePermission(member, this.text, view);
});
}
});
menu.menu().css({
position : 'absolute',
left : event.clientX,
top : event.clientY
});
$(document.body).append(menu);
/*$(document.body).one('click', function() {
menu.remove();
});*/
}
よろしくお願いします。