提问者:小点点

如何将jQuery与Angular一起使用?


谁能告诉我,如何使用jQuery和Angular?

class MyComponent {
    constructor() {
        // how to query the DOM element from here?
    }
}

我知道有一些变通方法,比如预先操作DOM元素的类或id,但是我希望有一种更干净的方法来完成它。


共3个答案

匿名用户

与NG1相比,从Angular2使用jQuery是轻而易举的。如果您使用的是TypeScript,您可以首先引用jQuery TypeScript定义。

tsd install jquery --save
or
typings install dt~jquery --global --save

不需要TypescriptDefinitions,因为您可以只使用作为的类型

在angular组件中,您应该使用从模板引用一个DOM元素。在视图初始化之后,您可以使用该对象的属性并传递给jQuery。

(或)声明为JQueryStatic将为您提供对jQuery的类型化引用。

import {bootstrap}    from '@angular/platform-browser-dynamic';
import {Component, ViewChild, ElementRef, AfterViewInit} from '@angular/core';
declare var $:JQueryStatic;

@Component({
    selector: 'ng-chosen',
    template: `<select #selectElem>
        <option *ngFor="#item of items" [value]="item" [selected]="item === selectedValue">{{item}} option</option>
        </select>
        <h4> {{selectedValue}}</h4>`
})
export class NgChosenComponent implements AfterViewInit {
    @ViewChild('selectElem') el:ElementRef;
    items = ['First', 'Second', 'Third'];
    selectedValue = 'Second';

    ngAfterViewInit() {
        $(this.el.nativeElement)
            .chosen()
            .on('change', (e, args) => {
                this.selectedValue = args.selected;
            });
    }
}

bootstrap(NgChosenComponent);

此示例可在Plunker上获得:http://plnkr.co/edit/nq9lnk?p=Preview

tslint会抱怨不是on的属性,为了解决这个问题,您可以在自定义*.d.ts文件中向JQuery接口添加一个定义

interface JQuery {
    chosen(options?:any):JQuery;
}    

匿名用户

为什么大家都把它当成火箭科学?对于其他需要对静态元素(例如标记)进行一些基本操作的人,只需执行以下操作:

    标记,在哪里都无关紧要(这样您也可以使用IE条件标记加载IE9及更低版本的jquery)。/li> 块中有一个调用代码的函数:正常时,这会导致声明错误,因此在此。ts文件中导入所有内容后,添加,您就可以使用GO/LI>了

匿名用户

这对我很管用。

// In the console
// First install jQuery
npm install --save jquery
// and jQuery Definition
npm install -D @types/jquery
// Now, within any of the app files (ES2015 style)
import * as $ from 'jquery';
//
$('#elemId').width();

// OR

// CommonJS style - working with "require"
import $ = require('jquery')
//
$('#elemId').width();

最近,我使用而不是编写代码,并且能够在中使用而不使用。这就是现在的样子:

import $ from 'jquery';
//
$('#elemId').width();

祝你好运。