我正在更新應用程序以使用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