【问题标题】:Set a different id for every new element in the callback off the load event为 load 事件回调中的每个新元素设置不同的 id
【发布时间】:2010-10-27 05:18:53
【问题描述】:

编辑了我原来的问题

在新添加的元素上设置 id 也是同样的问题 或者如果我使用函数中的参数 noteid。 结果是,如果这个函数得到循环,每个元素都会得到相同的 id。

如何为每个新添加的元素设置不同的 id ???

现在,提交事件中的值对于每个元素都是相同的。 如果我必须循环此函数以仅基于数据库条目创建多个注释 最后添加的 noteid 会被记住,并且每个元素都使用相同的 id。

如果您看到the page,您可以看到会发生什么 首先,您必须通过单击带有箭头的图标来创建两个笔记 然后删除最上面的,然后刷新页面。你会看到第二个被删除了。

newnote(tbnoteid){

    $('.wrappertbnote:last').load('tbnote.html .paneltbnote', function() { 
       var t = this;
       var tt= $(t).children(1).children("form").children("#frmnoteid");
        $(tt).attr('id' , tbnoteid);

        $(".frmremovetbnote:last").submit(function(){   
             var idvalue = $(tt).attr('id');

             $.post("tbnotesact.php",{
           noteid: tbnoteid,
           action: "remove",
           time: timestamp
           }, function(xml) {

谢谢,理查德

【问题讨论】:

  • 你能告诉我们负责添加新元素的函数的代码吗?
  • 是的,我可以,但它和上面的一样,但里面有更多的东西。调试警报等

标签: jquery events callback css-selectors closures


【解决方案1】:

你必须记住,这个函数是从另一个函数循环而来的! 你可以从我的页面上看到

我还发现了this comment 我相信在同一个问题上 但我不明白解决方案

我必须测试一下

我不知道如何测试它

我通过删除加载方法和绑定提交事件解决了这个问题 也许 jquery 处理起来变得复杂了

我使用 prepend 方法代替卸载,并使用普通的实时点击事件

向其中添加变量也容易得多。 和php的echo差不多

【讨论】:

  • 忽略我之前的建议,“self=this”在这种情况下对你没有帮助。这里发生了太多事情。在提交之上加载和替换html等。这需要简化,否则很难为您提供答案。
  • 我将删除提交事件的绑定并使用普通按钮。这种方式live支持clickevent
猜你喜欢
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多