2 lyx15091286512 lyx15091286512 于 2015.07.20 22:39 提问

javascript方法封裝問題

我想寫個方法類似於jquery的這種寫法
$(id).click(function(){

})

这样写為什麼不行 應該怎麼寫
window.$=function(id){
return document.getElementById(id);
}
$.click=function(f){

        $.attachEvent("onclick",f());
    }

8个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.07.20 22:56
这思路是不对的。
 window.$=function(id){  // window.$表示的是function,而不是dom节点
return document.getElementById(id);
}
$.click=function(f){//这里的$是function,不是dom节点,因此$.click无意义。$.attachEvent也无意义。
        $.attachEvent("onclick",f());
    }
cuiwei1026522829
cuiwei1026522829   Ds   Rxr 2015.07.20 23:16
showbo
showbo   Ds   Rxr 2015.07.21 10:54

    <div id="dv">dv</div>
    <script>
        window.$ = function (id) {
            var dom = document.getElementById(id);
            dom.click = $.click;
            return dom;
        }
        $.click = function (f) {
            this.attachEvent("onclick", f/*()*/);
        }
        $('dv').click(function () { alert(11) })
    </script>
showbo
showbo 回复lyx15091286512: addEventLisener你的参数错误,不需要on,而且少了第三个参数。<div id="dv">dv</div> <script> window.$ = function (id) { var dom = document.getElementById(id); dom.click = $.click; return dom; }; $.click = function (f) { if (this.attachEvent) this.attachEvent("onclick", f); else this.addEventListener("click", f,false); }; $('dv').click(function () { alert(11) }); </script> 。有用记得采纳
大约 3 年之前 回复
lyx15091286512
lyx15091286512 我在最底下发的代码,看着清楚
大约 3 年之前 回复
lyx15091286512
lyx15091286512 谢谢你了,但是弹不出来了
大约 3 年之前 回复
lyx15091286512
lyx15091286512 <script> window.$ = function (id) { var dom = document.getElementById(id); dom.click = $.click; return dom; } $.click = function (f) { if(this.attachEvent) this.attachEvent("onclick", f); else this.addEventListener("onclick", f); } $('dv').click(function () { alert(11) }) </script>
大约 3 年之前 回复
lyx15091286512
lyx15091286512 <script> window.$ = function (id) { var dom = document.getElementById(id); dom.click = $.click; return dom; } $.click = function (f) { if(this.attachEvent) this.attachEvent("onclick", f); else this.addEventListener("onclick", f); } $('dv').click(function () { alert(11) }) </script>
大约 3 年之前 回复
lyx15091286512
lyx15091286512 <script> window.$ = function (id) { var dom = document.getElementById(id); dom.click = $.click; return dom; } $.click = function (f) { if(this.attachEvent) this.attachEvent("onclick", f); else this.addEventListener("onclick", f); } $('dv').click(function () { alert(11) }) </script>
大约 3 年之前 回复
showbo
showbo 回复lyx15091286512:请认真看代码。。你的f()的括号去掉。。你的都直接执行f了将返回值作为事件处理函数
大约 3 年之前 回复
lyx15091286512
lyx15091286512 还没有点击 就运行了
大约 3 年之前 回复
u013829202
u013829202   Rxr 2015.07.21 11:08

怎么看都是jq的写法。 js只有三种获取方式,document.getElementById...等。在JavaScript中$是document.getElementById()的简写或者变量名...等等。而在jq里面,指代他对象的引用.

lyx15091286512
lyx15091286512   2015.07.21 21:19
<script>
    window.$ = function (id) {
        var dom = document.getElementById(id);
        dom.click = $.click;
        return dom;
    }
    $.click = function (f) {
        if(this.attachEvent)
        this.attachEvent("onclick", f);
        else
        this.addEventListener("onclick", f);
    }
    $('dv').click(function () { alert(11) })
</script>
lyx15091286512
lyx15091286512   2015.07.20 22:41
eval("alert('1')");
lyx15091286512
lyx15091286512   2015.07.20 22:42

"eval(&quot;alert(&#39;1&#39;)&quot;);"

CSDNXIAOD
CSDNXIAOD   2015.07.20 22:43

如何在JavaScript中封装Java的StringBuffer方法
封装方法到对象(javascript)
javascript方法的重载问题
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
pdf 9.0安裝問題
pdf 9.0安裝問題, pdf 9.0安裝問題
三維裝箱問題與啟發式算法之應用
三維裝箱問題與啟發式算法之應用,三維裝箱問題與啟發式算法之應用
MSN安裝程式
MSN安裝程式,保證完整安全,解決了MSN安裝中常遇到的問題。
yum相依问题 libsqlite.so.0
安裝YUM可是卻發生安裝時的相依問題libsqlite.so.0,解决方案。
封闭性问题、开放性问题、挑战性问题
封闭性问题、开放性问题、挑战性问题 开放性问题是相对于封闭性问题而言的。封闭性问题的答案唯一,多是一些虚拟的情境,开放性问题不求答案的唯一,强调方法的多样化,展现的是一个广阔的求知空间。“开”即能拓展,“封”即是束缚,“放”就会有个性,“闭”只能是一般化。对于问题而言,开放性问题让人有思维的冲动,封闭性问题让人的思维迟滞。问题的提出关系教的质量、学的质量。 传统、陈旧的数
ORACLE常用問題1000問
ORACLE常用問題1000問;ORACLE常用問題1000問;ORACLE常用問題1000問;ORACLE常用問題1000問
loadsscvf_1.0.7z
避免安裝 SuperCache II 之後, 無法正常開機的問題
[日企面试问题]日本企業面接問題
<br />確実ではないので、可能の質問は以下のとおりです。<br />①2分で自己紹介してください<br />②弊社への応募理由を教えてください<br />③あなたの現在の仕事と責任を教えてください<br />④入社してから今までの、あなたの成果を教えてください<br />⑤3年後の達成目標を教えてください<br />⑥その目標を達成するために、何が必要だと思いますか<br />⑦3年後、どのように弊社に貢献できますか<br />⑧あなたに不足していることは何でしょうか<br />⑨その不足している点を、
Cacti安裝、配置及常見問題處理
Cacti在windows平臺的安裝、配置及常見問題處理
QBQ問題背後在問題
QBQ問題背後在問題