Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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 在DOM元素上调用自定义方法_Javascript_Jquery_Dom_Methods_Invoke - Fatal编程技术网

Javascript 在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

我想在DOM元素上调用一个自定义方法

像这样:

<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元素的函数吗?我以前从未使用过原型修改,但我真的想使我的元素修改函数链成为可能。我读了一百万篇不同的帖子,但都没有给出关于钱的答案,直到我最终找到了这个超级简单的解释。