2

我正在尝试使用字符串变量作为 jQuery .on() 对象中的键。

我写了一个 jsfiddle 来说明这个问题:http: //jsfiddle.net/KHPUV/

我知道这可能不是一个专门的 jquery 问题,而更多的是与一般变量的使用有关,但是实现我想要做的最好的方法是什么?(使用字符串变量作为键)。

Click 在以下示例中不起作用,但 mouseover 和 mouseout 可以:

var responseEvent = 'click';
$('#el').on({
    'mouseover'        : mouseOver,
    'mouseout'         : mouseOut,
    responseEvent      : mouseClick
 });

谢谢你。

4

2 回答 2

3

那是不可能的。但是,您可以单独创建对象并将其作为参数传递给.on();

var responseEvent = 'click',
    props = {
        'mouseover': mouseOver,
        'mouseout' : mouseOut
    };
props[responseEvent] = mouseClick;

$('#el').on(props);
于 2013-09-17T08:57:04.923 回答
2

这将不起作用,因为 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 对象属性的另一种方式,它允许变量名。

于 2013-09-17T09:02:21.293 回答