不在每个页面上的元素的jQuery选择器。

不在每个页面上的元素的jQuery选择器。,jquery,Jquery,我有以下代码。工作正常,但我想知道第三行是否是最佳实践。当元素myID位于页面上时,其属性将更改。然而,并不是每一页上都有这样的内容,这通常没有任何作用。这对我来说似乎是无害的,但有什么我不知道的缺点吗 $(document).ready(function () { if ($(window).width() < 700) { $('#myID').attr('size', 1) } }); $(文档).ready(

我有以下代码。工作正常,但我想知道第三行是否是最佳实践。当元素myID位于页面上时,其属性将更改。然而,并不是每一页上都有这样的内容,这通常没有任何作用。这对我来说似乎是无害的,但有什么我不知道的缺点吗

    $(document).ready(function () {
        if ($(window).width() < 700) {
            $('#myID').attr('size', 1)
        }
    });
$(文档).ready(函数(){
如果($(窗口).width()<700){
$('myID').attr('size',1)
}
});

您可以在对对象执行任何操作之前检查对象是否存在

$(document).ready(function () {
    if ($(window).width() < 700 && $('#myID').length) {
        $('#myID').attr('size', 1);
    }
});
$(文档).ready(函数(){
if($(window.width()<700&$('#myID').length){
$('myID').attr('size',1);
}
});

您可以在对对象执行任何操作之前检查对象是否存在

$(document).ready(function () {
    if ($(window).width() < 700 && $('#myID').length) {
        $('#myID').attr('size', 1);
    }
});
$(文档).ready(函数(){
if($(window.width()<700&$('#myID').length){
$('myID').attr('size',1);
}
});
来自

.attr()方法仅获取第一个元素的属性值 在匹配的集合中。要分别获取每个元素的值, 使用循环构造,如jQuery的.each()或.map()方法

.attr()
方法尝试在jquery对象的第一个元素上设置属性。如果jquery对象为空,则不会发生任何事情。

From

.attr()方法仅获取第一个元素的属性值 在匹配的集合中。要分别获取每个元素的值, 使用循环构造,如jQuery的.each()或.map()方法


.attr()
方法尝试在jquery对象的第一个元素上设置属性。如果jquery对象为空,则不会发生任何事情。

这对我来说没有问题。因为jQuery对象中的每个元素都会调用
attr
方法。如果jQuery对象是空的,那么就没有问题。我问这个问题的唯一原因是,当我使用jQuery选择器处理每个页面上都不存在的元素时,我觉得我在IE上看到了一个小小的警告标志。这是一个不同的项目,所以我记不清100%。我认为
attr()
会对结果产生影响,所以这应该不会造成伤害。如果jQuery做了一个导致错误的选择器,那会很奇怪,因为这是最基本的操作之一。@EricG是的,我的错误。然而,我的官方答案是正确的(我想:)@chumkiu我在和jdln谈话,但读了你的答案后,我投了赞成票;)对我来说没问题。因为jQuery对象中的每个元素都会调用
attr
方法。如果jQuery对象是空的,那么就没有问题。我问这个问题的唯一原因是,当我使用jQuery选择器处理每个页面上都不存在的元素时,我觉得我在IE上看到了一个小小的警告标志。这是一个不同的项目,所以我记不清100%。我认为
attr()
会对结果产生影响,所以这应该不会造成伤害。如果jQuery做了一个导致错误的选择器,那会很奇怪,因为这是最基本的操作之一。@EricG是的,我的错误。然而,我的官方答案是正确的(我想:)@chumkiu我在和jdln谈话,但读了你的答案后,我投了赞成票;)我已编辑,因为上一个答案不正确
Undefined
是GET attr(未设置)返回的值。我已编辑,因为上一个答案不正确
Undefined
是GET attr(未设置)返回的值。