问题描述
- javascript方法封裝問題
-
我想寫個方法類似於jquery的這種寫法
$(id).click(function(){})
这样写為什麼不行 應該怎麼寫
window.$=function(id){
return document.getElementById(id);
}
$.click=function(f){$.attachEvent("onclick",f()); }
解决方案
这思路是不对的。
window.$=function(id){ // window.$表示的是function,而不是dom节点
return document.getElementById(id);
}
$.click=function(f){//这里的$是function,不是dom节点,因此$.click无意义。$.attachEvent也无意义。
$.attachEvent("onclick",f());
}
解决方案二:
http://blog.csdn.net/tjcyjd/article/details/6106884
解决方案三:
<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>
解决方案四:
怎么看都是jq的写法。 js只有三种获取方式,document.getElementById...等。在JavaScript中$是document.getElementById()的简写或者变量名...等等。而在jq里面,指代他对象的引用.
解决方案五:
<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>
解决方案六:
eval("alert('1')");
解决方案七:
"eval("alert('1')");"
解决方案八:
如何在JavaScript中封装Java的StringBuffer方法
封装方法到对象(javascript)
javascript方法的重载问题
时间: 2024-10-31 03:39:18