我正在使用jQuery replaceWith()方法替换html中的某些内容。它的工作正常。但是我想在replaceWith()完成后更改数据属性值。

所以基本上我是从我的ajax响应中得到的

UpdatedItem = '<li data-cart-key="XXX" data-item-name="Test" data-item-price="$111.00" data-item-key="XXX"><span class="cart-action-wrap"><a class="edit-cart-item" data-cart-item="XXX" data-cart-key="XXX" data-cart-action="edit">Edit</a><a class="remove-cart-item" data-cart-item="XXX" data-cart-key="XXX" data-cart-action="remove">Remove</a></span></li>';


现在我在这里像这样使用replaceWith()

$( 'ul.custom-contents' ).find( 'li.updated' ).replaceWith( UpdatedItem );


在这里,我想使用诸如update data属性值,remove class,replaceWith()完成后添加class之类的方法。

那么有人可以告诉我有什么方法可以做到这一点吗?任何帮助和建议都是非常可取的。谢谢

最佳答案

您可以在replaceWith中创建一个jQuery对象,执行操作并将其返回。将.find()用于嵌套元素:

$( 'ul.custom-contents' ).find( 'li.updated' ).replaceWith( fucntion(){
   let obj = $(UpdatedItem)
   obj.addClass("..")
   obj.data("cart-key", "..")
   obj.data("item-name", "..")
   obj.removeClass("..")

   //Find <a> with class "edit-cart-item"
   obj.find("a.edit-cart-item").addClass(...)
   obj.find("a.edit-cart-item").data("item-name", "..")
   return obj;
});

关于javascript - jQuery replaceWith()回调函数来更新内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61301228/

10-09 22:57