我有一些代码可以更新div的html。这个div只在一页上,js是站点范围。
$('#mydiv').html('<p>hello</p>');
我应该检查div是否存在或者只是让它尝试并且找不到div?
答案 0 :(得分:2)
实际上有两件事发生在那里。首先是这个......
$('#mydiv')
找到与选择器匹配的所有元素,并将它们作为jQuery对象数组返回。那你有这个......
.html('<p>hello</p>');
这只会针对上一个数组中的jQuery对象运行。
简而言之,该行包含检查该元素是否存在,因此您不必这样做。
请注意,这只是因为它们是jQuery函数,jQuery对开发人员很好。如果你要做这样的事情那么它可能会失败......
$('#mydiv').text().replace("a", "b");
那是因为text()
返回一个字符串,如果没有字符串,replace
会失败,因为它会undefined
。一旦你将jQuery函数分解为vanilla Javascript,你就会(通常)开始思考是否存在事物。
答案 1 :(得分:1)
我认为最好的答案是&#34;依赖&#34;。使用id #mydiv的div输出你操作失败,所以html不会被设置。
如果您有兴趣向用户展示某些内容,则操作失败,无法达到结果。
更简单的方法是通过将它们直接放入html来确保您需要操作的元素的存在。
另一种方法是通过jQuery控件确保元素存在,即:
if($("#mydiv").length==0)
$("body").append("#mydiv");
$('#mydiv').html('<p>hello</p>');
当然,你必须知道插入它的位置,以及该元素的绝对父级。顺便说一句,正如我所说的,如果可能的话,将div直接放到html会更容易。
答案 2 :(得分:-1)
最佳做法是对该类控件进行验证。所以我的建议是使用代码
HTML
<div id="mydiv"></div>
<input type="button" id="chk" value="button"/>
<强> JQUERY 强>
$('#chk').click(function() {
var len=$('#mydiv').length;
if(len>0)
{
$('#mydiv').html('<p>hello</p>');
}
});