JavaScript - 单击事件时遇到问题
问题描述:
我正在使用sizzle来选择DOM的各个部分。JavaScript - 单击事件时遇到问题
我的代码如下。问题在于onmouseup事件是在页面加载时触发的,而不是用户与页面交互时触发的。
有人可以解释为什么这是请。
谢谢。根据要求
// Effects object
var effects = {
// Display an object
show : function(obj) {
obj.style.display = 'block';
},
// Hide an object
hide : function(obj) {
obj.style.display = 'hide';
},
// Toggle
toggle : function(obj) {
if (obj instanceof Array) {
alert('array');
} else {
alert('single');
}
}
}
// Selector Class
var s = Sizzle;
window.onload = function() {
s('#toggle-content').onmouseup = effects.toggle(s('.hidden-content'));
}
HTML:
<div class="page-content box create-page">
<h1><span class="left">Create Page</span><a class="right" id="toggle-content" href="#">Expand</a></h1>
<div class="hidden-content">
...
</div>
</div>
答
这是因为你在打电话表达effects.toggle
。您应该实际绑定该函数以避免调用它。
function bind() { var initArgs = array(arguments); var fx = initArgs.shift(); var tObj = initArgs.shift(); var args = initArgs; return function() { return fx.apply(tObj, args.concat(array(arguments))); }; } function array(a) { var r = []; for (var i = 0; i < a.length; i++) r.push(a[i]); return r; } window.onload = function() { s('#toggle-content').onmouseup = bind(effects.toggle, null, s('.hidden-content')); }
+0
这会触发一个javascript错误。 '数组未定义' – JasonS 2010-06-28 12:16:53
+0
现在已修复。对于那个很抱歉! – 2010-06-29 09:18:53
答
你需要通过它作为一个匿名函数,例如。
window.onload = function() {
s('#toggle-content').onmouseup = function(){effects.toggle(s('.hidden-content'));}
}
如果您发布了一些您想要受此影响的HTML(例如“toggle-content”和“hidden-content”元素),这将有所帮助。 – Pointy 2010-06-28 12:30:59
按要求添加了HTML。 – JasonS 2010-06-28 13:09:48