2010-07-02 5 views
1

Я перебираю элементы из базы данных через PHP, пытаясь вызвать внешнюю форму для редактирования каждого элемента при нажатии. Я написал Javascript, основанный на платформе Prototype, которая в основном меня привлекает. Однако при попытке выбрать родительский элемент щелкнутого элемента после первого успешного редактирования последующие изменения завершаются сбоем, а содержимое первого отредактированного элемента заменяется последним нажатым.Как выбрать определенный динамически созданный элемент с Prototype/JS?

В других случаях, у меня есть список, как это:

B C

После нажатия кнопки "A" и изменить его на "1" через мою внешнюю форму, затем выбрав "B" и изменить его на "2" результаты в следующем:

C

с мелки nts второго элемента (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'); 
Смежные вопросы