Javascript 在DOM元素上调用自定义方法
我想在DOM元素上调用一个自定义方法 像这样:Javascript 在DOM元素上调用自定义方法,javascript,jquery,dom,methods,invoke,Javascript,Jquery,Dom,Methods,Invoke,我想在DOM元素上调用一个自定义方法 像这样: <div id="MyObject"> <!-- some elements --> </div> <script> function doSomething() { // do something with input DOM element } $("MyObject").doSomething(); </script> 函数do
<div id="MyObject">
<!-- some elements -->
</div>
<script>
function doSomething() {
// do something with input DOM element
}
$("MyObject").doSomething();
</script>
函数doSomething(){
//对输入DOM元素执行一些操作
}
$(“MyObject”).doSomething();
我如何发展这个问题?是否需要使用jQuery?您不需要使用jQuery。您可以使用
document.getElementById('MyObject')
获取对DOM节点的引用
要在其上运行doSomething
函数,需要向其添加如下节点参数:
function doSomething(input) {
// do something with input DOM element
}
doSomething(document.getElementById('MyObject'));
要将其链接起来,您需要添加到所有DOM节点实现的元素接口(重读,我指的是继承自)。如果你这样做,你可以:
Element.prototype.doSomething = function() {
alert(this);
}
document.getElementById('MyObject').doSomething();
JSFiddle:
MDN:我自己找到了答案
我可以这样练习:
<script>
(function ($) {
$.fn.doSomething = function () {
// do something like this
$(this).append("Hello Object");
}
} (jQuery));
$("#MyDOMElement").doSomething();
</script>
(函数($){
$.fn.doSomething=函数(){
//做这样的事
$(this.append(“Hello对象”);
}
}(jQuery));
$(“#MyDOMElement”).doSomething();
没有jQuery,您可以执行以下操作
if(typeof$!=“函数”){
//创建一个函数$,它将返回具有所述id的元素
窗口。$=函数(id){
返回文档.getElementById(id);
}
}
//向Elemen原型添加一个方法,以便可以在任何元素对象上调用它
Element.prototype.doSomething=函数(){
this.innerHTML='hi from inner';
}
$('MyObject').doSomething()代码>
它是否绑定到特定事件,如单击、悬停等?或者你只是想让它成为函数中的一个可访问的值?不,我想调用输入DOM元素上的每个自定义函数这样做的原因是什么?我不想将DOM元素的名称传递给函数,我想在每个任意DOM元素上调用该函数。@EmadArmoun您的意思是要定义一个以通用方式绑定到每个DOM元素的函数吗?我以前从未使用过原型修改,但我真的想使我的元素修改函数链成为可能。我读了一百万篇不同的帖子,但都没有给出关于钱的答案,直到我最终找到了这个超级简单的解释。