我知道您可以使用.data()
将内容存储在jQuery对象中,无论何时找到该元素,无论使用何种选择器,您的数据都将存在。
您还可以使用.sub()
使用自己的函数创建jQuery分支,并使用该子选择元素。
但有没有办法简单地说$("#something").foo = function() { ... };
,然后再去$("#something").foo();
?
这似乎不是一个很难写的插件。对我来说,这似乎是一个很棒的工具。有什么理由我找不到它吗?
答案 0 :(得分:0)
jQuery对象不是持久的,这意味着每次你说$(“#something”)时都会创建一个新的jQuery对象。这意味着,它实际上每次都会搜索Dom树,以获取id = something的元素。
如果你想为它添加一个函数,你可以将jQuery对象存储在一个变量中,稍后再引用该变量:
var something = $("#something");
something.foo = function() { ... }
// Later on
something.foo();
您也可以通过自己的插件轻松扩展jQuery的行为,
jQuery.fn.foo = function() {
// Do your awesome plugin stuff here
};
然后你可以直接拨打电话,如$(“#something”)。foo();
答案 1 :(得分:0)
这是不可能的,因为每次使用$
函数时,它都会创建一个 new jquery对象,因此您将丢失添加的属性或方法。
$("#something").foo = function() { ... }
$("#something").foo(); //Error. foo is not a function
但是,您可以将此方法直接添加到dom元素(但不建议这样做),如下所示:
$("#something")[0].foo = function() { ... };
$("#something")[0].foo(); //foo() gets executed!!
但你必须小心,你可以覆盖现有的dom方法或属性。例如,如果您将方法命名为“innerHTML”,则会覆盖该属性。这就是为什么不推荐它。
希望这会有所帮助。干杯