gpt4 book ai didi

javascript - 是否可以修改 jquery 对象并检索修改后的对象

转载 作者:行者123 更新时间:2023-12-03 10:51:05 25 4
gpt4 key购买 nike

我正在尝试修改 $('#some_id') 生成的对象,一切似乎都工作正常,但是当我询问修改后的对象时,它根本没有任何变化。

$('#log_container').log
undefined
$('#log_container').log = {}
Object {}
$('#log_container').log
undefined

为什么 $('#log_container').logundefined 而不是我在上一行中明确分配的内容?

最佳答案

因为jQuery('some-selector')每次调用时都会返回一个新对象:

function whatHappens(selector) {
return {
magic: 'here'
}
}

whatHappens('when').log // undefined
var result = whatHappens('when');
result.log = {};
var result2 = whatHappens('when');
result === result2 // false
result.log // {}
result2.log // undefined

如果您需要一些数据始终在对象上可用,您可以:

  • 使用data设置DOM节点数据的方法:

    $('#log_container').data('log', {});
    $('#log_container').data('log');
  • 存储对 jQuery 集合的引用:

    var $logContainer = $('#log_container');
    $logContainer.log = {};
    $logContainer.log; // {}
  • 更新返回的 jQuery 集合的 [[Prototype]](jQuery.prototype,通常由其别名 jQuery.fn 引用) code>) 添加数据/方法(这使得数据可用于所有 jQuery 集合,过去、现在和 future ):

    jQuery.fn.log = function yourLoggingMethod() {
    // Available on all jQuery collections now
    // Shared state - don't put things like {} or []
    // on here unless you intend to have a mutable "global".
    };

    然后您就可以像平常一样创建集合:

    var $logContainer = $('#log_container');
    $logContainer.log // function yourLoggingMethod

关于javascript - 是否可以修改 jquery 对象并检索修改后的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28417051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com