【问题标题】:jquery - should I check if an object exists?jquery - 我应该检查一个对象是否存在?
【发布时间】:2014-06-11 00:34:05
【问题描述】:

我有一些代码可以更新 div 的 html。这个div只有一页,js是全站范围的。

$('#mydiv').html('<p>hello</p>');

我应该检查 div 是否存在,还是让它尝试找到 div 却失败?

【问题讨论】:

  • 你打算如何检查对象是否存在
  • 你可以别管它...
  • jQuery 检查后台是否存在对象,您不需要这样做。但是,如果您愿意,请使用if($('#mydiv').length){}

标签: jquery html exists


【解决方案1】:

我认为最好的答案是“依赖”。 Whitout 一个 id 为 #mydiv 的 div 你操作失败,所以 html 不会被设置。

如果您有兴趣向用户展示某些内容,则操作失败并且不会得到任何结果。

更简单的方法是确保您需要操作的元素的存在,方法是将它们直接放入 html 中。

另一种方法是通过jQuery控制确保元素存在,即:

if($("#mydiv").length==0) 
   $("body").append("#mydiv");
$('#mydiv').html('<p>hello</p>');

当然,您必须知道在哪里插入它,以及该元素的绝对父级。顺便说一句,如果可能的话,直接把div放到html里面比较容易。

【讨论】:

  • 你在第一行拼错了length
【解决方案2】:

最佳做法是对此类控件进行验证。所以我的建议是使用代码

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>');
    }

});

【讨论】:

  • 我的代码有什么问题吗......请提一下。所以我可以在未来恢复(&请提及反对投票的原因)
【解决方案3】:

那里实际上发生了两件事。首先是这个……

$('#mydiv')

查找所有匹配选择器的元素并将它们作为 jQuery 对象数组返回。那么你有这个...

.html('<p>hello</p>');

这只会针对前面数组中的 jQuery 对象运行。

简而言之,该行包括检查元素是否存在,因此您不必这样做。


请注意,这只是这种情况,因为它们是 jQuery 函数,而 jQuery 对开发人员来说非常好。如果你要做这样的事情,那么它可能会失败......

$('#mydiv').text().replace("a", "b");

这是因为text() 返回一个字符串,如果没有字符串,replace 将失败,因为那将是undefined。一旦您将 jQuery 函数重新转换为原生 Javascript,那么您(通常)必须开始考虑事物是否存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 2012-07-27
    • 2010-12-23
    • 2012-03-27
    • 1970-01-01
    相关资源
    最近更新 更多