javascript - 如何使用 Prototype/JS 选择特定的动态生成元素?

标签 javascript ajax prototypejs

我通过 PHP 循环访问数据库中的项目,尝试在单击时调用外部表单来编辑每个项目。我已经根据 Prototype 框架编写了 Javascript,这让我大部分时间都到了那里。但是,当尝试选择单击的项目的父元素时,在第一次成功编辑后,后续编辑将失败,并且第一个编辑的元素的内容将替换为最后单击的项目。

换句话说,我有一个这样的列表:

一个 乙

点击“A”并通过我的外部表单将其更改为“1”后,随后选择“B”并将其更改为“2”,结果如下:

2

C

用第二项的内容(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)); ?>

最佳答案

运行时“this”的计算结果是什么?而不是

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

尝试从事件中获取元素:

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

关于javascript - 如何使用 Prototype/JS 选择特定的动态生成元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3168342/

相关文章:

javascript - Ajax.Request 与 Prototype onComplete 导致请求不会发生

javascript - jQuery AJAX 提交不工作

javascript - 在循环中多次重复数组中的项目?

Javascript编码: Input a specific date, 输出季节

jquery - 如何修复 'Missing required request header. Must specify one of: origin,x-requested-with' Ajax 错误

javascript - 从 javascript onclick 发出 ajax 请求

javascript - Chrome 开发者工具 - JavaScript 继承

javascript - 将输入字符串转换为剩余链接 JavaScript

javascript - 在模态内部使用 jquery 验证器后重置/删除表单中的类

javascript - AJAX表单提交问题