1
將圖形添加到畫布並將點擊功能分配給每個項目。在點擊編輯窗口顯示出來,使用戶編輯形狀將此功能傳遞給某個功能會更改所有已點擊的元素
function place(id, top, leftpx, width, height, color) {
var dropped;
dropped.attr('s_id', id)
.appendTo('.xy')
.data({
'posleft': leftpx,
'postop': top,
'width': width,
'height': height,
'color': color
})
.css({
top: top + "px",
left: leftpx + "px",
position: "absolute",
width: width,
height: height
});
dropped.resizable({
containment: '.xyz',
handles: 'all',
stop: function(event, ui) {
$(this).data('width', ui.size.width);
$(this).data('height', ui.size.height);
}
});
dropped.click(function(e) {
var id = $(this).attr("shelf_id"); // gives the correct id
edit($(this));
});
當我點擊一個項目,它正確地改變顏色,但只要我點擊第二個,它也改變顏色之前點擊過的項目。對應的功能如下:
function edit(item) {
//edit window shows up
$("#editDataForm").submit(function(e) {
var id_color = $("#colorSelect option:selected").val();
if (item.data('color') != id_color) {
switch (id_color) {
case '1':
item.css("background-color", "yellowgreen");
item.data('color', id_color);
break;
case '2':
item.css("background-color", "indianred");
item.data('color', id_color);
break;
default:
break;
}
}
e.preventDefault();
});
}
有人請給我一個暗示,我的推理錯誤是哪裏。我只是無法破解它
或者:'$( 「#editDataForm」)一個( '提交',函數(E){...});' –
@ A.Wolff我不認爲這會做到這一點。每次調用'.one()'都會添加一個運行一次的新處理程序並刪除它自己。但是如果在提交之前多次調用edit(),它們每個都會運行。 – Barmar
你是對的! –