一旦 jQuery 被包含在 Angular 中,内部指令就可以自由地使用 $(element) 和 $(this) 进行 DOM 操作。
它们之间有什么区别?一个比另一个推荐吗?它们可以互换吗?
一旦 jQuery 被包含在 Angular 中,内部指令就可以自由地使用 $(element) 和 $(this) 进行 DOM 操作。
它们之间有什么区别?一个比另一个推荐吗?它们可以互换吗?
$(this)
将取决于正在执行的方法的上下文,$(element)
将始终引用附加到的指令。
这是一个人为的例子
module.directive('myDirective', [function() {
return {
template: '<div><button id="btn">Click Me</button></div>',
restrict: 'E',
link: function(scope, element, attrs, controller) {
$("#btn").on('click', function() {
// $(this) != $(element)
// $(this) is the button element from the template
// $(element) is the directive element
});
}
}
}]);
由于 Angular js 在引擎盖下使用 jqlite(jquery 的最小版本)作为选择器,因此在 angular js 中可能相同,但名称也不同。