我正在更新应用程序以使用RequireJS并将函数/变量移出全局上下文。我不确定在使用JQuery点击处理程序时如何构造事物,以便我的函数可以访问HTML对象上的data-*
属性,这些属性触发点击并有权访问模块内的属性。使用RequireJS和JQuery onclick事件处理“this”
下面是一个简单的测试案例,我放在一起来展示我正在尝试做什么。 我想要一个在div的click事件上调用的函数,它能够访问触发它的div上的data-value
属性和我使用RequireJS加载的模块内的packageVar
属性。
这里是我的index.html
:
<!DOCTYPE html>
<head>
<title>Test.Next</title>
</head>
<body>
<script data-main="js/test-require" src="js/require.js"></script>
<div id="test-no-bind" data-value="value">Test No Bind</div>
<div id="test-bind" data-value="value">Test Bind</div>
</body>
</html>
这里是test-require.js
:
requirejs.config({
"baseUrl": 'js',
"paths": {
"jquery": "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min",
"domReady": 'vendor/domReady'
}
});
requirejs(['maintest','domReady!'], function(main) {
main.initialize();
});
最后我maintest.js
:
define(['jquery','domReady!'], function($) {
return {
'packageVar' : 'test',
buttonClick : function() {
console.log($(this).attr("data-value"));
console.log(this.packageVar);
},
initialize: function() {
$("#test-no-bind").click(this.buttonClick);
$("#test-bind").click(this.buttonClick.bind(this));
}
};
});
的test-no-bind
DIV结果:
value
undefined
中的test-bind
DIV结果:
undefined
test