jQuery append元素,如果它没有'不存在,否则替换
jQuery append element if it doesn't exist, otherwise replace
这里有一小段代码:
var $el = $("#something").find(".test");
if (!$el.length) {
$("#something").append('<div class="test">somecontent</div>');
} else {
$el.replaceWith('<div class="test">somenewcontent</div>');
}
我找不到appendOrReplaceWith或类似的方法。
有什么办法可以让它变短吗?
我相信:
$("#something").appendOrReplace('<div class="test">sometext</div>');
阅读起来会容易得多,但目前还没有这样的方法。
只需先删除它,然后追加即可。
$(".test").remove();
$("#something").append('<div class="test">somecontent</div>');
强制香草答案。它可能不短,但更快。
获取元素,用类"test"获取所有子元素,创建div,检查子元素的长度,如果长度为true,则将innerHTML
设置为div。否则,将其附加。
var el = document.getElementById("something");
var subel = el.getElementsByClassName("test");
var div = document.createElement("div");
div.className = "test"
if (subel.length) {
div.textContent = "somenewcontent";
while(el.hasChildNodes()) el.removeChild(el.lastChild); //remove child nodes
el.appendChild(div);
} else {
div.textContent = "somecontent";
el.appendChild(div);
}
在jQuery中添加findOrAppend
这样的方法可能很有用:
$.fn.findOrAppend = function(selector, content) {
var elements = this.find(selector);
return elements.length ? elements : $(content).appendTo(this);
}
然后可以根据需要链接text
、replaceWith
、empty
等:
$("#something")
.findOrAppend(".test", "<div class='test'>")
.text("newcontent");
首先,您应该缓存选择器:
var $som = $('#something');
var $ele = $(".test",$som);
var newHtml = '<div class="test">somecontent</div>';
if (!$el[0]) $som.append( newHtml );
else $ele.replaceWith( newHtml );
但你已经做得很好了(除了不缓存重复的选择器之外),而我,试图让它变得更小可能会因为我的if
和else
没有使用{}
而受到惩罚:)
我会做这个
var $s = $("#something"), $t = $s.find(".test"), c = 'New content';
( $t[0] ? $t:$s)[( $t[0] ? 'html':'append')](( $t[0] ? c :$('<div>',{class:'test'}).append(c)));
相关文章:
- 正在将事件处理程序添加到不存在的类
- javascript如果图像不存在don't加载它
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- JavaScript-如果以前不存在文本,如何从文本区域删除新行
- 如何将一个函数附加到一个不存在的元素上
- 在scala或scalajs Diode中,现有类型中的任何一种都符合“;更新一个没有'还不存在”;
- 查找数组's按属性不存在于另一个数组中的对象
- 用javascript在对象上创建不存在的方法
- 仅当值不为'不存在
- casperjs-css选择器存在,但当单击它时会引发“”;CasperError:无法在不存在的选择器“”上调度mou
- 运行时不存在Javascript函数
- 用javascript添加类,而不是替换
- 使用webdriver和selenium验证元素是否不存在
- 是否存在替换Javascript构造函数的问题'原型,而不是添加到原型中
- 如何在从数据库异步加载时用占位符替换不存在的图像
- 测试以查看具有 json 值的图像是否损坏/不存在,并替换为“无照片”图像
- 如果图像路径存在,则替换文本,如果不存在则显示原始图像
- 如果子元素不存在,则追加图像;如果子元素存在,则替换
- jQuery append元素,如果它没有'不存在,否则替换
- 当损坏的 img url 不存在时,将损坏的 img url 替换为默认值 与 AngularJS jqlite