精打细算jQuery怪异

时间:2010-03-30 00:34:24

标签: jquery

......至少对我而言。此代码使用正常工作。我很确定没有任何改变,但现在突然间它表现得很奇怪。基本上我正在尝试创建内联编辑功能。当用户点击链接时,它会动态生成文本框以及确认和取消链接。我遇到了取消链接的问题,没有删除单元格中的所有内容。

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();
}

但是,出于某种原因,点击后取消链接仍然存在!除此之外,其他所有内容都被删除。 W T F

感谢您提供的任何见解!我确定这只是一些愚蠢的小细节我已经过了[含咖啡因]看...

更新发布此消息后,我立刻认为它可能是一个CSS问题,但在仔细检查我的代码后,却没有。

2 个答案:

答案 0 :(得分:4)

你需要稍微调整一下:

$('.bid a:not(.cancel)').live('click', renderBidChange);

由于您已移至.live(),因此第一个功能也会在点击取消时运行:)

答案 1 :(得分:0)

如果你改变会发生什么:

$('.report_table .cancel').live('click', cancelUpdate); 

$('.bid .cancel').live('click', cancelUpdate); 

我不期待一个解决方案,但我只是双重检查

.accept的“实时”功能是什么?它是否有效(大概是这样)