Вопрос
... по крайней мере для меня. Этот код использовал работать нормально. Я почти уверен, что ничего не изменилось, но теперь внезапно оно ведет себя странно. По сути, я пытаюсь создать встроенные функциональность редактирования. Когда пользователь нажимает на ссылку, он динамически генерирует текстовый поле и подтверждение и отмену ссылки. У меня проблемы со ссылкой на отмену, а не удаляют все в ячейке.
HTML:
...
<td class="bid">
<a href="javascript:" class="102093" title="Click to modify bid">$0.45</a>
</td>
...
Обязательный jQuery (в $(function())
):
$('.bid a').live('click', renderBidChange);
....
$('.report_table .cancel').live('click', cancelUpdate);
renderBidChange
(Эта функция создает динамические элементы):
function renderBidChange(){
var cpc = $(this);
var value = cpc.text().replace('$', '');
var cell = cpc.parent('.bid');
cpc.hide();
var input = document.createElement('input');
$(input).attr({type:'text',class:'dynamic cpc-input'}).val(value);
cell.append(input);
var accept = document.createElement('a');
$(accept).addClass('accept').attr({'href':'javascript:',
'title':'Accept Changes'}).text('Accept Changes');
cell.append(accept);
var cancel = document.createElement('a');
$(cancel).addClass('cancel').attr({'href':'javascript:',
'title':'Cancel Changes'}).text('Cancel Changes');
cell.append(cancel);
$(input).focus();
input.select();
}
cancelUpdate
Эта функция просто удаляет все видимое (в этом случае весь динамический мусор) в ячейке и показывает, что там было раньше.
function cancelUpdate(){
var cell = $(this).parent();
cell.find(':visible').remove();
cell.find(':hidden').show();
}
Однако по какой -то причине ссылка отмены остается после того, как она нажата! Все остальное удалено, кроме этого. WTF
Спасибо за любую информацию, которую вы можете предоставить! Я уверен, что это просто какая -то глупая маленькая деталь, которую я закончил [кофеино], ищу ...
ОБНОВИТЬ Сразу же после публикации этого я озвучивал, что это может быть проблемой CSS, но после двойной проверки моего кода это не так.
Решение
Вам нужен небольшая настройка здесь:
$('.bid a:not(.cancel)').live('click', renderBidChange);
Поскольку вы переехали в .live()
, первая функция также работает с щелчком на отмену :)
Другие советы
Что произойдет, если вы изменитесь:
$('.report_table .cancel').live('click', cancelUpdate);
к
$('.bid .cancel').live('click', cancelUpdate);
Я не ожидаю решения, но я просто удваиваю
Какая функция «живой» для .accept? Это работает (предположительно)