0

这是场景......我在页面加载时用jquery替换的每个字段旁边都有一个复选框,其中带有“删除”文本,使我能够通过jquery删除该字段,这工作正常。像这样...

$(".profile-status-box").each(function(){ $(this).replaceWith('<span class="delete">' + 'Delete' + '</span>') });

然而问题来了,在页面加载后,我还为用户提供了动态添加新字段的选项。新添加的字段虽然有复选框而不是删除链接,因为它们没有被 jquery 替换,因为它们是在初始页面加载后添加的。

不刷新页面就不能替换添加到页面的新元素的内容吗?如果没有,我总是可以有两个具有不同标记的模板,一个用于 js,一个用于非 js,但我试图避免 taht。

提前致谢。

4

2 回答 2

3

您可以使用.livequery()插件,如下所示:

$(".profile-status-box").livequery(function(){ 
  $(this).replaceWith('<span class="delete">Delete</span>') 
});

匿名函数针对找到的每个元素运行,每个元素在添加时都与选择器匹配。

于 2010-10-04T23:37:54.080 回答
0

看看这个酷演示。它删除并添加了像魅力这样的元素。

http://www.dustindiaz.com/basement/addRemoveChild.html

就是这样:

首先,(x)html 非常简单。 xHTML 片段

<input type="hidden" value="0" id="theValue" />
<p><a href="javascript:;" onclick="addElement();">Add Some Elements</a></p>
<div id="myDiv"> </div>

隐藏的输入元素只是让您有机会动态调用您可以开始使用的号码。例如,可以使用 PHP 或 ASP 设置。onclick 事件处理程序用于调用该函数。最后,设置 div 元素并准备好接收一些附加到自身的子元素(天哪,听起来很奇怪)。

Mkay,到目前为止很容易。现在JS函数。

addElement JavaScript 函数

function addElement() {
  var ni = document.getElementById('myDiv');
  var numi = document.getElementById('theValue');
  var num = (document.getElementById('theValue').value -1)+ 2;
  numi.value = num;
  var newdiv = document.createElement('div');
  var divIdName = 'my'+num+'Div';
  newdiv.setAttribute('id',divIdName);
  newdiv.innerHTML = 'Element Number '+num+' has been added! <a href=\'#\' onclick=\'removeElement('+divIdName+')\'>Remove the div "'+divIdName+'"</a>';
  ni.appendChild(newdiv);
}

如果你愿意,

removeElement JavaScript 函数

函数 removeElement(divNum) { var d = document.getElementById('myDiv'); var olddiv = document.getElementById(divNum); d.removeChild(olddiv); }

就是这样。鲍勃你叔叔。

这取自这篇文章/教程:http ://www.dustindiaz.com/add-and-remove-html-elements-dynamically-with-javascript/

我自己刚刚学会了这一点。感谢你的提问

希望有帮助。

PK

于 2010-10-04T23:41:13.313 回答