我有一个DOMNodeInserted侦听器,该侦听器在添加具有特定类的项目时触发。在那之后,我想在该特定添加项之前添加一些html。这是我如何实现的代码
var conditionValue = `<div class="custom-condition">${$.trim($('.group-conditions label').text())} </div>`;
$('.rules-list').on('DOMNodeInserted', function(e) {
if ( $(e.target).hasClass('rule-container') ) {
//element with .MyClass was inserted.
var ruleFilterContainer = $('.rule-filter-container');
//First attempt to prepend the html to the specific added item
$(e.target).find('.rule-filter-container')[0].prepend(conditionValue);
//Second attempt to prepend the html to the specific added item
ruleFilterContainer.each(function(index, item){
console.log(item, $(item).find('.custom-condition').length)
if($(item).find('.custom-condition').length < 1){
console.log($(item))
$(item)[0].prepend(conditionValue);
}
})
}
});
在两次尝试中,当我将选择器记录为prepend方法时,它都会向我显示正确的html选择器,但没有在html之前。
这怎么可能?
答案 0 :(得分:0)
使用.eq(0)
而不是[0]
,以将元素保留为jQuery对象。然后,您可以根据需要使用prepend
方法。
如果您知道只有一个元素,则不必执行任何一个操作,而只需添加到jQuery对象即可。