在重构此代码之前,只需进行实际检查.据我所知,它来自一个有能力的人.这是一个示例:
// remove line at the latest list
if($(".extra-space").length > 0) {
$(".extra-space li:last").addClass("noborder");
}
// select all
if($(".extra-select-all").length > 0) {
$(".extra-select-all").click(function() {
if($(this).attr("checked") == true) $(".extra-select-item").attr("checked","checked");
else $(".extra-select-item").removeAttr("checked");
});
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道这种模式背后的基本原理,还是只是无知if包装是不必要的?
// remove line at the latest list
$(".extra-space li:last").addClass("noborder");
// select all
$(".extra-select-all").click(function() {
if($(this).attr("checked") == true) $(".extra-select-item").attr("checked","checked");
else $(".extra-select-item").removeAttr("checked");
});
Run Code Online (Sandbox Code Playgroud)
从编程上讲它是有道理的,因为这些元素不可能存在并且返回的数组可能有一定长度0,但由于jQuery适用于设计人员和非程序员,它会自动处理对不存在元素的调用,这意味着您不需要这些检查,因为jQuery尽可能虚拟.
$('microsoft').addClass('sucks')完全有效,因为返回的jquery obj有一个addClass它继承的方法,无论是否有元素,该方法都会执行.
注意:我只说纯jQuery方法.如果执行的方法是自定义插件或甚至是另一个答案中指定的UI插件,则行为可能与核心不同,在这种情况下,检查.length
就个人而言,我总是会检查,.length因为这意味着如果重构发生在后面的话会减少模糊和猜测,如果神秘的错误开始出现,我的错误检查将节省调试时间.