2010-07-02 83 views
1

我正在通過PHP循環訪問數據庫中的項目,試圖在外部窗體中調用單擊時編輯每個項目。我已經寫了基於Prototype框架的JavaScript,這讓我大部分都在那裏。但是,當試圖選擇被單擊項目的父元素時,在第一次成功編輯後,後續編輯失敗,並且第一個編輯元素的內容被最後一個被點擊的項目取代。如何用Prototype/JS選擇特定的動態生成元素?

。換句話說,我有這樣的列表:

甲 乙 Ç

點擊 「A」 並改變其後爲 「1」 通過我的外部形式,隨後選擇 「B」 和改變爲 「2」 的結果如下所示:

ç

隨着康特第二項(B或2)的替換內容的第一項(a或1.)

請注意,這是不是我的PHP外部表單的問題(刷新頁面將顯示我所有的更新值正確。)我的問題是與JavaScript選擇正確的父元素,其中顯示我的帖子的結果。

(作爲一個有趣的方面說明,當我通過點擊和改變我的元素開始在列表的底部,沒有任何元素被覆蓋和頁面的功能,因爲它應該。)

function inlineEditor() { 
$$('div.form span.status').each(function(elm){ 
elm.observe('click',function(evt){ 
    Event.stop(evt); 
    var block = this.up('div.form'); 
    var item = block.id; 
    new Ajax.Updater(block,'status_types_edit.php',{ 
    parameters:{id:item}, 
    evalScripts:true 
    }); 
}); 
}); 
} 

<body onload="inlineEditor();"> 

<?php do { ?> 
    <div class="form" id="<?php echo $row_GetStatus_Types['id']; ?>"> 
    <span class="status"><?php echo $row_GetStatus_Types['status_name']; ?></span> 
    </div> 
<?php } while ($row_GetStatus_Types = mysql_fetch_assoc($GetStatus_Types)); ?> 

回答

0

什麼「這個」是否在運行時評估?取而代之的

var block = this.up('div.form'); 

嘗試從事件獲取的元素:

var block = $(Event.element(evt)).up('div.form');