Вопрос

... по крайней мере для меня. Этот код использовал работать нормально. Я почти уверен, что ничего не изменилось, но теперь внезапно оно ведет себя странно. По сути, я пытаюсь создать встроенные функциональность редактирования. Когда пользователь нажимает на ссылку, он динамически генерирует текстовый поле и подтверждение и отмену ссылки. У меня проблемы со ссылкой на отмену, а не удаляют все в ячейке.

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? Это работает (предположительно)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top