jquery - 这些 jQuery 元素测试完全没有必要吗?

标签 jquery

在重构这段代码之前,先进行一下现实检查。据我所知,它来自于其他方面有能力的人。这是一个示例:

// 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");
    });
}

有谁知道这种模式背后的基本原理,还是只是因为不知道 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");
});

最佳答案

从编程角度来说,这是有道理的,因为这些元素不可能存在,并且返回的数组的长度可能为 0,但由于 jQuery 是为设计人员和非程序员服务的,因此它会自动处理对非程序员的调用。 - 现有元素,这意味着您实际上并不需要这些检查,因为 jQuery 是尽可能防伪的。

$('microsoft').addClass('sucks') 完全有效,因为返回的 jquery obj 有一个继承的 addClass 方法,并且无论是否执行该方法都会执行或者不存在一个元素。

注意:我只谈论纯 jQuery 方法。如果执行的方法是自定义插件,甚至是另一个答案中指定的 UI 插件,则行为可能与核心不同,在这种情况下,检查 .length

就我个人而言,我总是会检查.length,因为这意味着如果稍后进行重构,则可以减少歧义和猜测工作,并且如果神秘的错误开始出现,我的错误检查将节省时间调试期间。

关于jquery - 这些 jQuery 元素测试完全没有必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5147828/

相关文章:

jquery - 使用 jquery 获取自定义属性的值

javascript - 如何使用 jquery 过滤特殊字符和字母?

Jquery ui-sortable - 无法在空的 tbody 中删除 tr

javascript - 获取div在页面滚动上的位置

javascript - 比较两个输入字段中的值

javascript - 底部图片未齐平位于页面底部

javascript - 多复选框值检查和结果更新表数据

jquery - 使用 jQuery 清除启用多选的 <select> 上的所有选择的快速方法?

javascript - 单击复选框后更改带有图像的复选框

javascript - 在 JavaScript 行中添加空格