2013-10-28 28 views
3

这是更多broad question的一部分。它受到的关注度不高,请让我问一下我无法实现的唯一部分。如何注册一个dom对象的类似jquery的javascript函数?说我有以下的HTML页:如何在javascript中定义dom对象的函数

<html><body> 
    <div id = "table"/> 
    <div id = "chart"/> 
</body></html> 

,并希望能够调用$('#table').update()$('#chart').update()?我需要这些更新函数来包含不同的逻辑和局部变量,例如不同的url来加载数据。对不起,可能是noob。

UPDATE

如果我理解正确,插件是一个全局命名空间,可以处理任何对象的函数。我宁愿将不同的功能与不同的元素联系起来。那是因为我认为将不同的对象与不同的对象关联起来更容易,而不是写一个更新函数,对于每个对象必须研究的更新函数是适用的,如果是的话,如何。

+2

是'更新()'插件你写的吗?你可以在包含不同数据的元素上使用'data- *'变量,并在你的'update()'方法中处理它们的逻辑。 –

+0

你问如何[创建一个插件](http://learn.jquery.com/plugins/basic-plugin-creation/)? – George

+0

我不知道插件是否是解决方案,并相应地更新了我的问题 – latheiere

回答

3

你不需要jQuery的这一点。 DOM元素是对象,所以你可以给他们任何你想要的方式:

var table = document.getElementById('table'); 
table.update = function() { 
    this.innerHTML += 'table updated '; 
}.bind(table); 

var chart = document.getElementById('chart'); 
chart.update = function() { 
    this.innerHTML += 'chart updated '; 
}.bind(chart); 


document.getElementById('table').update(); 
document.querySelector('#chart').update(); 

例子:http://jsbin.com/uReyIRi/1/edit

+0

似乎这个'.bind'是我错过的东西! – latheiere

+1

“这个绑定的东西”用于确保函数在它定义的对象的上下文中运行。很高兴有帮助。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind – Tibos

4

什么你后jQuery's fn.extend()

$.fn.extend({ 
    update: function() { 
     /* Required code. */ 
    } 
}); 

然后,你可以简单地调用.update()一个jQuery对象上执行该功能:

$('myElement').update(); 

作为一个例子使用,如果我们想记录一个元素的id,我们可以将update()函数定义为:

$.fn.extend({ 
    update: function() { 
     console.log("ID = " + this.id); 
    } 
}); 

然后调用:

$('#table').update(); 

这将日志:

ID =表

+3

小错字在你回答;上传应该更新;) – Ben

+0

@本好好喊!固定。 –

+0

非常感谢@JamesDonnelly,那部分也非常有帮助 – latheiere

相关问题