我在网上找到的每个解决方案都返回“未定义”几个小时。 我有一个使用ajax通过jquery验证插件提交的表单。 回复.... id会根据这样的数据而改变
<div class="item" id="item-1"> .... </div>
<div class="item" id="item-2"> .... </div>
<div class="item" id="item-3"> .... </div>
顺便说一句,我无法访问返回数据的php服务器。
我想获取id名称,以便首先删除具有相同id的div元素 并附加来自服务器的响应。
我试过的最后一个代码是
var targetDiv = $(response).find('.item');
alert(targetDiv);
感谢
答案 0 :(得分:0)
问题在于,response
中的元素是顶级元素,因此find
将在其后代中仅查看 。
您可以先将返回的元素包装起来(例如在虚拟div中),以创建一个有效的祖先元素来搜索:
// Wrap the incoming HTML in a dummy element
var $div = $('<div>').html(response);
// Find the .item and alert its id
alert($div.find('.item').attr('id'));
或(如他人所建议)您可以过滤返回的单个项目,但如果返回多个项目,则可能会失败。坚持包装技巧。
答案 1 :(得分:0)
使用filter()
和map()
:
var idsToRemove = $(response).filter('.item').map(function () {
return '#' + this.id;
}).get().join(',');
$(idsToRemove).remove(); // then remove old duplicates from DOM