jQuery .on() 不使用字符串变量作为键
jQuery .on() not working with string variable as key
我正在尝试使用字符串变量作为jQuery .on()
对象的键。
我写了一个jsfiddle来说明这个问题:http://jsfiddle.net/KHPUV/
我知道这可能不是专门针对 jQuery 的问题,而是与一般变量的使用有关,但是实现我想要做的事情的最佳方法是什么?(使用字符串变量作为键)。
在以下示例中,单击不起作用,但mouseover
和mouseout
起作用:
var responseEvent = 'click';
$('#el').on({
'mouseover' : mouseOver,
'mouseout' : mouseOut,
responseEvent : mouseClick
});
这是不可能的。但是,您可以单独创建对象并将其作为参数传递给.on()
;
var responseEvent = 'click',
props = {
'mouseover': mouseOver,
'mouseout' : mouseOut
};
props[responseEvent] = mouseClick;
$('#el').on(props);
这是
行不通的,因为Javascript将responseEvent解释为传递给.on()的对象中的键名,而不是变量。考虑一下:
var str = 'key3';
var o1 = {
'key1': 'value1'
'key2': 'value2'
str: 'value3'
};
现在 o1.key1 == 'value1',正如预期的那样。但是 o1.str == 'value3',而不是 o1.key3 == 'value3'。
如果需要,可以按如下方式构建事件对象
var eventObjects = {};
var responseEvent = 'click';
eventObjects[responseEvent] = function(evt){...};
eventObjects['mouseover'] = function(evt){...};
$('#el').on(eventObjects);
带有 [] 的表示法是访问 javascript 对象属性的另一种方法,它允许变量名称。
相关文章:
- 使用JSON文件中的变量(字符串)填充文本区域
- 如何向变量字符串添加更多值
- jquery将变量字符串作为ID's
- 如何用HTML和相应的引号形成变量字符串
- PHP 反序列化 JS 序列化的变量字符串
- Javascript 不传递整个变量字符串
- 带有变量字符串的索引
- 如何将表单类值合并到新的变量字符串中
- 在 JavaScript 中将变量字符串括起来
- jQuery:用变量字符串替换(连接的)按钮值
- "[对象对象]”;在警报提示中使用时替换变量字符串
- 通过变量字符串定义对象
- 无法在Javascript中连接字符串+变量+字符串
- Fancybox-是否可以使用javascript变量字符串作为HTML内容
- 从变量字符串应用条件
- 如何在pug中插入变量字符串
- Javascript -在变量字符串中捕获名称
- 不能把变量(字符串)在javascript innerhtml
- 用变量字符串调用React类
- 使用 Browserify/Babel/node.js您是否需要一个基于变量字符串的文件