2010-03-30 76 views
2

...至少對我來說。此代碼使用工作正常。我很確定沒有任何變化,但現在突然間它表現得很奇怪。基本上我試圖創建內聯編輯功能。當用戶點擊鏈接時,它會動態生成一個文本框和一個確認和取消鏈接。我在取消鏈接時沒有刪除單元格中的所有內容。令人難以置信的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這個功能只是刪除一切可見(所有動態垃圾在這個cas e)在單元格中顯示曾經存在的內容。

function cancelUpdate(){ 
    var cell = $(this).parent(); 
    cell.find(':visible').remove(); 
    cell.find(':hidden').show(); 
} 

但是,由於某種原因,點擊後取消鏈接仍然存在!除此之外,其他一切都被刪除。 W T F

感謝您提供的任何見解!我敢肯定,這只是一些愚蠢的小細節,我在[caffeinatedly] ...看

UPDATE立即發佈這個我epiphanied,這可能是一個CSS的問題,但經過雙重檢查我的代碼之後,不是。

+0

我不知道什麼更糟 - 事實上,這個問題被標記爲「怪異」,或者「怪異」已經是一個建立的標記與幾個問題使用它。 – 2010-03-30 00:40:02

+0

哈哈......但它很奇怪!我想,一旦你在一個框架內工作了足夠長的時間,並且知道該期待什麼,你就可以開始將古怪標記爲奇怪:) – Jason 2010-03-30 00:41:02

+0

這很奇怪。我會先議會交換接受和取消按鈕,以確保它不是「最後一個元素」問題,但通過代碼閱讀,我會期望取消與您一樣刪除。我還可以議會「睡在上面,明天再看」嗎? – jcolebrand 2010-03-30 00:43:59

回答

4

你需要一個輕微的調整位置:

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

既然你已經搬到.live(),第一功能也與上一點擊運行取消:)

+0

這是正確的。到現在爲止,這不是一個問題,但是感謝我成爲我的備用眼睛! :) – Jason 2010-03-30 00:52:06

0

如果你改變會發生什麼:

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

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

我不指望有解決方案,但我只是雙重檢查

.accept的「live」功能是什麼?它工作(大概是這樣)

+0

感謝您對此進行調查。尼克的回答是正確的!我綁定了所有的鏈接,而不僅僅是最初的鏈接。 – Jason 2010-03-30 00:50:48

+0

是啊,他提交我的報告後,我閱讀他的和「/ facepalm」...耶!它的作品! – jcolebrand 2010-03-30 00:54:56

+0

是的!再次感謝您的幫助:) – Jason 2010-03-30 00:57:26

相關問題