Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $(this.prop(';属性';)与this.property_Javascript_Jquery - Fatal编程技术网

Javascript $(this.prop(';属性';)与this.property

Javascript $(this.prop(';属性';)与this.property,javascript,jquery,Javascript,Jquery,考虑到jQuery的少写多做的哲学,当我看到这一点时,我总是感到惊讶: $(this).prop('checked') …而不是这个: this.checked 查看最新的jQuery源代码,prop()为以下两个问题提供了便利: $(elem).prop('for')相当于elem.htmlFor $(elem.prop('class')相当于elem.className 它还将tabIndex标准化为: 0表示不带制表符索引的可制表符元素。 -1表示不可制表的元素。 prop() 但

考虑到jQuery的少写多做的哲学,当我看到这一点时,我总是感到惊讶:

$(this).prop('checked')
…而不是这个:

this.checked
查看最新的jQuery源代码,
prop()
为以下两个问题提供了便利:

  • $(elem).prop('for')
    相当于
    elem.htmlFor
  • $(elem.prop('class')
    相当于
    elem.className
  • 它还将
    tabIndex
    标准化为:

    • 0表示不带制表符索引的可制表符元素。
    • -1表示不可制表的元素。
    prop()


    但是使用
    prop()
    在单个元素上设置或检索单个属性有什么好处(惯用的除外),除非规范化
    tabIndex
    ——特别是当您在回调中引用该元素时(例如
    this

    。prop
    作为getter没有真正的好处,事实上,它的性能不如直接访问属性

    .prop
    的真正用途是用作设置器

    如果您阅读,有3种方法可以使用
    .prop
    进行设置


    .道具(道具,价值) 第一种方法对单个元素没有好处(除非可能存在兼容性问题)

    实际上
    this.check=true
    $(this).prop('checked',true)
    相同,但速度更快

    但是,如果您有一组元素,则有一个优势。您不必手动循环所有元素,jQuery可以为您完成


    .prop({prop:value[,prop:value,…]}); 当您有多个属性要更改时,第二种方法很有用。不要像这样列出要更改的每个属性:

    this.prop1=true;
    this.prop2=true;
    this.prop3=true;
    this.prop4=true;
    
    $(this).prop({
        prop1 : true,
        prop2 : true,
        prop3 : true,
        prop4 : true
    });
    
    您可以传递这样的对象:

    this.prop1=true;
    this.prop2=true;
    this.prop3=true;
    this.prop4=true;
    
    $(this).prop({
        prop1 : true,
        prop2 : true,
        prop3 : true,
        prop4 : true
    });
    

    .prop(prop,callback) 第三种方式在我看来是我最喜欢的一种。使用回调函数可以在一组条件下单独设置每个元素。回调函数接收两个参数:索引和旧值

    使用函数的一个好例子是反转每个复选框的状态:

    $('checkbox').prop('checked', function(_, old){
        return !old;
    });
    

    不,没有优势。当您拥有的唯一东西已经是一个jQuery对象时,这很方便,但是创建一个新的jQuery对象以便调用
    .prop()
    是愚蠢的。@px5x2-在按照此示例从中读取值时不是。我喜欢这个线程-不确定它是否需要答案,但您说明了我只使用5年前5%的jQuery库的原因之一。普通的方法甚至对基本的js类型完全有意义,例如
    document.querySelector('input[type=checkbox'))
    上的checked属性将给我一个布尔值,因为它正在查找一个复选框,但是
    document.querySelector('div'))
    将是未定义的。@RickHitchcock:有时,该表单用于与代码的其余部分保持一致,或用于不混淆新手,或在将代码从问题复制到答案时未被编辑。尽管有更好的知识,.jQuery对某些属性进行了一些更正,例如IE中的
    src
    href
    tabIndex
    ,…
    prop
    作为一个getter具有处理每个jQuery集合的优势,尤其是空的和动态选择的集合。当然,
    $(这个)
    :-)@Bergi-Ahah是的,我不认为这是一个真正的优势,但你是对的。这似乎是确定的,
    回调
    方法在某些情况下绝对是一个优势。接受,谢谢。