如何在Angular中使用jQuery?


343

谁能告诉我,如何使用jQuery的

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

我知道有一些变通方法,例如预先处理DOM元素的ID,但我希望有一种更干净的方法。


2
不知道您发布时使用的是哪个版本,但是对我来说,在index.html中添加JQuery cdn足以在组件中调用$
TheFreedomBanana


10
虽然某些jQuery功能(尤其是插件或jQueryUI)在Angular2应用程序中可能非常有用,但并不是如您所描述的那样,从Angular2组件内部查询和操作DOM的最佳实践。在Angular2应用中,您要操作的DOM元素应绑定到组件模型。DOM元素状态应根据模型更改而更改。看看这个答案:stackoverflow.com/questions/42411744/best-practice-of-angular-2
Benyamin Shoham

6
我认为正确的答案是:您不要。Angular比jquery更为先进和更新,它没有过时且具有很多更清晰的代码
mast3rd3mon

7
一个人为什么要在Angular中使用JQuery?
克里斯蒂安·特拉纳

Answers:


331

与ng1相比,使用来自Angular2的jQuery轻而易举。如果您使用的是TypeScript,则可以先引用jQuery打字稿定义。

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

不需要TypescriptDefinitions,因为您可以将any其用作$或的类型。jQuery

在您的角度组件中,您应该使用引用模板中的DOM元素。@ViewChild()初始化视图之后,您可以使用nativeElement此对象的属性并将其传递给jQuery。

$(或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将抱怨chosen不是$的属性,要解决此问题,您可以在自定义* .d.ts文件的JQuery接口中添加定义

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

2
我不确定为什么setTimeout需要解决方法。我尝试了其他几个jQuery组件,似乎所有这些组件都需要此变通办法来进行正确的初始化。我希望这会在ng2的未来版本中有所改变
wasnskjold

7
在alpha37 github.com/angular/angular/blob/2.0.0-alpha.37/CHANGELOG.md 核心中添加了新的回调 :添加了afterContentInit,afterViewInit和afterViewChecked挂钩(d49bc43),关闭#3897
Mourad Zouabi

18
设置起来并不难,但是与angular 1相比,它肯定不是“轻而易举的事”。在angular 1中,您无需执行任何操作,并且可以在任何地方使用jQuery。angular 1建立在jquery之上。
user428517

8
通过键入安装定义后,仍无法识别JQueryStatic。
贡萨洛

4
我认为我们需要对此进行一些更新,因为我们现在使用NPM进行打字
Jackie

122

为什么每个人都将它变成火箭科学?对于需要在静态元素上做一些基本工作(例如,body标记)的其他人,只需执行以下操作:

  1. 在index.html中,添加script带有您的jquery lib路径的标记,无论在哪里(这样,您也可以使用IE条件标记为IE9及更低版本的jquery加载较低版本的jquery)。
  2. 在您的export component块中有一个调用代码的函数:$("body").addClass("done");通常,这会导致声明错误,因此,在此.ts文件中的所有导入之后,添加declare var $:any;就可以了!

20
对我不起作用。所以我要学习一些火箭科学。:)
Prajeet Shrestha

11
角度2的要点是消除处理DOM的复杂性。Angular 2有一个diff算法,可以为您高效地渲染您的组件,这就是为什么更好地通过将jquery指向Angular 2组件而不是直接操纵DOM来欺骗jquery操纵DOM。
2016年

4
我的朋友intellisense,这就是为什么
Ayyash

5
declare var $:any;为了胜利!
tylerlindell'4

2
这绝对可以,但是如果您不再生活在石器时代,请改用公认的答案。
jlh

112

这对我有用。

步骤1-首先

// In the console
// First install jQuery
npm install --save jquery
// and jQuery Definition
npm install -D @types/jquery

第2步-导入

// 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();

#UPDATE- Feb - 2017

最近,我正在写代码ES6,而不是typescript和我能够import* as $import statement。这是现在的样子:

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

祝好运。


50
花了我一个小时来弄清楚如何将jQuery放入Angular 2(正确)中。
Starboy

1
为了从“ jquery”工作中导入$,您需要设置--allowJs
titusfx 17-4-7

1
import * as $ from 'jquery';app.module.ts中使其可用于整个项目。顺便说一句:“为什么--save而不是--save-dev?”
马丁·施耐德

3
import $ from 'jquery';那是此页imo上最漂亮的jquery import语句。正是我想要的样子。
cs_pupil

1
@Starboy,这是因为您在Angular应用程序中不需要任何JQuery,如果这样做,您很可能在做错什么。
phil294

55

现在,它变得非常容易,您只需在Angular2控制器内声明任何类型的jQuery变量即可完成此操作。

declare var jQuery:any;

在import语句之后和组件装饰器之前添加此代码。

要访问ID为X或Class X的任何元素,您只需要做

jQuery("#X or .X").someFunc();

经过验证,这可用于webpack的angular 2(由yeoman Aspnetcore SPA生成的SPA模板)。最简单的方法通常效果最好!谢谢。
binjiezhao

1
我在我的项目上使用它,但是缺少此方法是因为我们失去了所有jQuery类型的强大类型功能:)
trungk18

在Angular 6(6.0.3)中工作
AlejandroMorán18年

工作于:Angular CLI:7.1.4节点:10.15.0
Lance

28

一种简单的方法:

1.包含脚本

index.html

<script type="text/javascript" src="assets/js/jquery-2.1.1.min.js"></script>

2.声明

my.component.ts

declare var $: any;

3.使用

@Component({
  selector: 'home',
  templateUrl: './my.component.html',
})
export class MyComponent implements OnInit {
 ...
  $("#myselector").style="display: none;";
}

为我工作。但是我没有在MyComponent内使用ngOnInit(){//我的jQuery}来实现OnInit(Angular不想接受它)
Ilya Kushlianski

25

请按照以下简单步骤操作。它为我工作。让我们从一个新的angular 2应用程序开始,以避免任何混乱。我正在使用Angular cli。因此,如果还没有安装,请安装它。 https://cli.angular.io/

第1步:创建演示angular 2应用

ng new jquery-demo

您可以使用任何名称。现在通过在cmd下运行来检查它是否正常工作(现在,如果不使用cd命令,请确保您指向的是'jquery-demo')

ng serve

您将看到“应用程序有效!” 在浏览器上。

步骤2:安装Bower(网络的程序包管理器)

在cli上运行以下命令(如果不使用cd命令,请确保指向“ jquery-demo”):

npm i -g bower --save

现在,成功安装Bower之后,请使用以下命令创建“ bower.json”文件:

bower init

它将要求输入,如果要使用默认值,则只需按Enter键,最后输入“是”,然后询问“看起来好吗?”。

现在,您可以在文件夹“ jquery-demo”中看到一个新文件(bower.json)。您可以在https://bower.io/上找到更多信息。

步骤3:安装jquery

运行此命令

bower install jquery --save

它将创建一个新文件夹(bower_components),其中将包含jquery安装文件夹。现在,您已经在'bower_components'文件夹中安装了jquery。

步骤4:在'angular-cli.json'文件中添加jquery位置

打开“ angular-cli.json”文件(位于“ jquery-demo”文件夹中),然后在“脚本”中添加jquery位置。它看起来像这样:

"scripts": ["../bower_components/jquery/dist/jquery.min.js"
              ]

步骤5:编写简单的jQuery代码进行测试

打开“ app.component.html”文件并添加一个简单的代码行,该文件将如下所示:

<h1>
  {{title}}
</h1>
<p>If you click on me, I will disappear.</p>

现在,打开“ app.component.ts”文件,并为“ p”标签添加jquery变量声明和代码。您还应该使用生命周期挂钩ngAfterViewInit()。进行更改后,文件将如下所示:

import { Component, AfterViewInit } from '@angular/core';
declare var $:any;

@Component({
     selector: 'app-root',
     templateUrl: './app.component.html',
     styleUrls: ['./app.component.css']
})
export class AppComponent {
     title = 'app works!';

     ngAfterViewInit(){
           $(document).ready(function(){
             $("p").click(function(){
             $(this).hide();
             });
           });
     }
}

现在,使用“ ng serve”命令运行您的angular 2应用并对其进行测试。它应该工作。


3
恕我直言。这是我仍然对客户端依赖项使用Bower的最佳方法。
的Firat KUCUK

$("p").click(function(){ $(this).hide(); });”什么时候不在 Angular中使用jQuery的最佳示例?
Martin Schneider

3
仅使用npm设置是否更容易?npm install jquery --save,然后"scripts":["../node_modules/jquery/dist/jquery.js"],再import $ from 'jquery';在* .ts文件。使用凉亭有什么好处?
cs_pupil

1
@cs_pupil您也可以使用npm,但是Bower设计为仅管理前端程序包。查找stackoverflow.com/questions/18641899/…–
AmanDeepSharma

1
@AmanDeepSharma,谢谢!奇怪的是,它似乎已被弃用。npm install bower产生:npm WARN deprecated bower@1.8.0:stackoverflow.com/a/31219726/3806701
cs_pupil

13

您可以实现生命周期挂钩ngAfterViewInit()来添加一些DOM操作

ngAfterViewInit() {
            var el:any = elelemtRef.domElement.children[0];
            $(el).chosen().on('change', (e, args) => {
                _this.selectedValue = args.selected;
            });
}

使用router时要小心,因为angular2可能会回收视图..因此,必须确保仅在afterViewInit的第一次调用中才对DOM元素进行操作。(可以使用静态布尔变量来这样做)

class Component {
    let static chosenInitialized  : boolean = false;
    ngAfterViewInit() {
        if (!Component.chosenInitialized) {
            var el:any = elelemtRef.domElement.children[0];
            $(el).chosen().on('change', (e, args) => {
                _this.selectedValue = args.selected;
            });
            Component.chosenInitialized = true;
        }
    }
}

3
Property 'domElement' does not exist on type ElementRef
villasv

12

我用更简单的方式做到了-首先通过npm在控制台中安装jquery:npm install jquery -S然后在我刚刚编写的组件文件中:let $ = require('.../jquery.min.js')它可以工作!这里是一些我的代码的完整示例:

import { Component, Input, ElementRef, OnInit } from '@angular/core';
let $ = require('../../../../../node_modules/jquery/dist/jquery.min.js');

@Component({
    selector: 'departments-connections-graph',
    templateUrl: './departmentsConnectionsGraph.template.html',
})

export class DepartmentsConnectionsGraph implements OnInit {
    rootNode : any;
    container: any;

    constructor(rootNode: ElementRef) {
      this.rootNode = rootNode; 
    }

    ngOnInit() {
      this.container = $(this.rootNode.nativeElement).find('.departments-connections-graph')[0];
      console.log({ container : this.container});
      ...
    }
}

在teplate中,例如:

<div class="departments-connections-graph">something...</div>

编辑

或者,代替使用:

let $ = require('../../../../../node_modules/jquery/dist/jquery.min.js');

采用

declare var $: any;

并在您的index.html中放:

<script src="assets/js/jquery-2.1.1.js"></script>

这只会初始化一次全局查询-这对于例如在引导程序中使用模式窗口很重要...


我不知道我从不使用angular-cli,但是我使用angular2-webpack-starter,它在那里工作。
卡米尔·基列夫斯基(KamilKiełczewski),2013年

那要求方法从哪里来?
omeralper


1
您有错字=> console.log({ conatiner : this.container});修正它为console.log({ container: this.container});
eric.dummy

11

步骤1:使用命令:npm install jquery --save

第2步:您只需将angular导入为:

从'jquery'导入$;

就这样 。

一个例子是:

import { Component } from '@angular/core';
import  $ from 'jquery';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent {
  title = 'app';
  constructor(){
    console.log($('body'));
  }


}

模块..node_modules / @类型/ jQuery的/索引“”没有默认的出口
梅德格林柯

10

//安装jQuerynpm install jquery --save

//为jQuery安装类型定义typings install dt~jquery --global --save

//按照指定的方式将jQuery库添加到构建配置文件中(在“ angular-cli-build.js”文件中)

vendorNpmFiles: [
  .........
  .........
  'jquery/dist/jquery.min.js'
]

//运行构建以在构建中添加jquery库 ng build

//添加相对路径配置(在system-config.js中) /** Map relative paths to URLs. */ const map: any = { ....., ......., 'jquery': 'vendor/jquery/dist' };

/** User packages configuration. */
const packages: any = {
......,
'jquery':{ main: 'jquery.min',
format: 'global',
defaultExtension: 'js'}};

//将jQuery库导入组件文件中

import 'jquery';

以下是我的示例组件的代码片段

import { Component } from '@angular/core';
import 'jquery';
@Component({
  moduleId: module.id,
  selector: 'app-root',
  templateUrl: 'app.component.html',  
  styleUrls: ['app.component.css']
})
export class AppComponent {
  list:Array<number> = [90,98,56,90];
  title = 'app works!';
  isNumber:boolean = jQuery.isNumeric(89)  
  constructor(){}
}

太棒了,非常适合ng-cli项目。谢谢!
Chanakya Vadla

超级滑!我正在为项目使用Angular-cli,这是黄金!继续前进
Logan H

我没有'angular-cli-build.js'文件:/
Gonzalo

10

如果您使用angular-cli,则可以执行以下操作:

  1. 安装依赖项

    npm install jquery-保存

    npm install @ types / jquery --save-dev

  2. 导入文件

    在.angular-cli.json文件的“脚本”部分中添加“ ../node_modules/jquery/dist/jquery.min.js”

  3. 声明jQuery

    将“ $”添加到tsconfig.app.json的“类型”部分

您可以在官方的Angular CLI文档中找到更多详细信息


1
生成时会导致以下错误:错误TS2688中的错误:找不到“ $”的类型定义文件。
描绘

错误TS1192:模块'jQuery的'没有默认出口
梅德格林柯

8

在Angular2中使用Jquery(4)

遵循这些步骤

安装Jquery和Juqry类型定义

对于Jquery安装 npm install jquery --save

对于Jquery类型定义安装 npm install @types/jquery --save-dev

然后简单地导入jQuery

import { Component } from '@angular/core';
import * as $ from 'jquery';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent { 
  console.log($(window)); // jquery is accessible 
}

1
阿卡什答案重复!?
马丁·施耐德

7

使用Angular Cli

 npm install jquery --save

在angulars.json中的脚本数组

"scripts": [ "node_modules/jquery/dist/jquery.min.js" ] // copy relative path of node_modules>jquery>dist>jquery.min.js to avoid path error

现在要使用jQuery,您所需要做的就是按照以下方式将其导入到要使用jQuery的任何组件中。

例如在根组件中导入和使用jQuery

import { Component, OnInit  } from '@angular/core';
import * as $ from 'jquery'; // I faced issue in using jquery's popover
Or
declare var $: any; // declaring jquery in this way solved the problem

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {


ngOnInit() {
}

jQueryExampleModal() { // to show a modal with dummyId
   $('#dummyId').modal('show');
}

路径错误使用./node_modules而不是../node_modules
Vikas Kandari

4

由于我是笨拙的,所以我认为拥有一些有效的代码会很好。

另外,Angular2类型的角度量角器版本与jQuery有问题 $,因此接受的答案并没有给我一个干净的编译器。

这是我必须工作的步骤:

index.html

<head>
...
    <script   src="https://code.jquery.com/jquery-3.1.1.min.js"   integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="   crossorigin="anonymous"></script>
...
</head>

在my.component.ts内部

import {
    Component,
    EventEmitter,
    Input,
    OnInit,
    Output,
    NgZone,
    AfterContentChecked,
    ElementRef,
    ViewChild
} from "@angular/core";
import {Router} from "@angular/router";

declare var jQuery:any;

@Component({
    moduleId: module.id,
    selector: 'mycomponent',
    templateUrl: 'my.component.html',
    styleUrls: ['../../scss/my.component.css'],
})
export class MyComponent implements OnInit, AfterContentChecked{
...
    scrollLeft() {

        jQuery('#myElement').animate({scrollLeft: 100}, 500);

    }
}

4

写就好了

declare var $:any;

在所有导入部分之后,您可以使用jQuery并将jQuery库包含在index.html页面中

<script src="https://code.jquery.com/jquery-3.3.1.js"></script>

它对我有用


2


1)访问组件中的DOM。

import {BrowserDomAdapter } from '@angular/platform-browser/src/browser/browser_adapter';
constructor(el: ElementRef,public zone:NgZone) {
     this.el = el.nativeElement;
     this.dom = new BrowserDomAdapter();
 }
 ngOnInit() {
   this.dom.setValue(this.el,"Adding some content from ngOnInit"); 
 }

您可以通过以下方式包含jQuery。2)在angular2加载之前,将jquery文件包含在index.html中

      <head>
    <title>Angular 2 QuickStart</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="styles.css">

    <!-- jquery file -->
    <script src="js/jquery-2.0.3.min.js"></script>
    <script src="js/jquery-ui.js"></script>
    <script src="node_modules/es6-shim/es6-shim.min.js"></script>
    <script src="node_modules/zone.js/dist/zone.js"></script>
    <script src="node_modules/reflect-metadata/Reflect.js"></script>
    <script src="node_modules/systemjs/dist/system.src.js"></script>
    <script src="systemjs.config.js"></script>
    <script>
      System.import('app').catch(function(err){ console.error(err); });
    </script>
  </head>

您可以通过以下方式使用Jquery,在这里,我正在使用JQuery Ui日期选择器。

    import { Directive, ElementRef} from '@angular/core';
    declare  var $:any;
    @Directive({
      selector: '[uiDatePicker]',
     })
    export class UiDatePickerDirective {
      private el: HTMLElement;
      constructor(el: ElementRef) {
        this.el = el.nativeElement;

     }

    ngOnInit() {
        $(this.el).datepicker({
         onSelect: function(dateText:string) {
            //do something on select
         }
        });
    }
}

这项工作对我来说。


2

我跳过了jquery的安装,因为在我之前创建的所有帖子中都提到了这一点。因此,您已经安装了jquery。像这样将t导入组件

import * as $ from 'jquery';

可以使用,但是还有另一种“角度”方式可以通过创建服务来实现。

步骤编号 1:创建jquery.service.ts文件

// in Angular v2 it is OpaqueToken (I am on Angular v5)
import { InjectionToken } from '@angular/core';
export const JQUERY_TOKEN = new InjectionToken('jQuery');

步。没有。2:在app.module.ts中注册服务

import { JQUERY_TOKEN } from './services/jQuery.service';
declare const jQuery: Object;

providers: [
    { provide: JQUERY_TOKEN, useValue: jQuery },
]

步骤编号 3:将服务注入组件my-super-duper.component.ts

import { Component, Inject } from '@angular/core';

export class MySuperDuperComponent {
    constructor(@Inject(JQUERY_TOKEN) private $: any) {}

    someEventHandler() {
        this.$('#my-element').css('display', 'none');
    }
}

如果有人可以解释这两种方法的优缺点,我将不胜感激:DI jquery as a service vs. import * as $ from'jquery';


1

我发现的最有效的方法是在页面/组件构造函数内部使用setTimeout并将时间设置为0。这使jQuery在Angular完成加载所有子组件之后的下一个执行周期中运行。可以使用其他一些组件方法,但是在setTimeout中运行时,我尝试过的所有方法均能达到最佳效果。

export class HomePage {
    constructor() {
        setTimeout(() => {
            // run jQuery stuff here
        }, 0);
    }
}

3
您绝对应该使用ngOnInit()而不是使用
xordon

1
ngAfterViewInit()
Niyaz

setTimeout如果您*ngFor要渲染许多项目,则实际上无法真正工作。
claudchan

1

这是对我有用的-带webpack的Angular 2

我尝试声明$为type,any但是每当尝试使用任何JQuery模块时(例如),$(..).datepicker()它都不是一个函数

由于我的vendor.ts文件中包含Jquery,因此我只需使用以下命令将其导入到组件中

import * as $ from 'jquery';

我现在可以使用Jquery插件(例如bootstrap-datetimepicker)


请注意,您的应用将花费5倍的时间来进行引导。
杰克

@jake是由于加载引导程序库所需的时间吗?
raghav710

不,jQuery需要更长的时间。bootstrap!== twitter bootstrap
jake杰克

@杰克哎呀!我的意思是说jQuery。感谢您的
来稿

@jake您介意解释一下为什么通过使整个应用程序都可以使用jquery来引导应用程序花费5倍的时间来进行引导
Marvel Moe17

1

您也可以尝试使用“ InjectionToken”将其导入。如此处所述:在不带类型定义的Angular / Typescript中使用jQuery

您可以简单地注入并使用jQuery全局实例。为此,您不需要任何类型定义或类型。

import { InjectionToken } from '@angular/core';

export const JQ_TOKEN = new InjectionToken('jQuery');

export function jQueryFactory() {
    return window['jQuery'];
}

export const JQUERY_PROVIDER = [
    { provide: JQ_TOKEN, useFactory: jQueryFactory },
];

在app.module.ts中正确设置后:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { AppComponent } from './app.component';

import { JQ_TOKEN } from './jQuery.service';

declare let jQuery: Object;

@NgModule({
    imports: [
        BrowserModule
    ],
    declarations: [
        AppComponent
    ],
    providers: [
        { provide: JQ_TOKEN, useValue: jQuery }
    ],
    bootstrap: [AppComponent]
})
export class AppModule { }

您可以在组件中开始使用它:

import { Component, Inject } from '@angular/core';
import { JQ_TOKEN } from './jQuery.service';

@Component({
    selector: "selector",
    templateUrl: 'somefile.html'
})
export class SomeComponent {
    constructor( @Inject(JQ_TOKEN) private $: any) { }

    somefunction() {
        this.$('...').doSomething();
    }
}

1

全局库安装作为此处的官方文档

  1. 从npm安装:

    npm install jquery --save

  2. 将所需的脚本文件添加到脚本中:

    "scripts": [ "node_modules/jquery/dist/jquery.slim.js" ],

如果正在运行,请重新启动服务器,并且该服务器应该可以在您的应用程序上正常工作。


如果要在单个组件import $ from 'jquery';内部使用,请在组件内部使用


1

其他人已经发布。但是我在这里举一个简单的例子,这样可以帮助一些新手。

步骤1:在您的index.html文件参考jquery cdn中

     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>

第2步:假设我们要在单击按钮时显示div或隐藏div:

 <input type="button" value="Add New" (click)="ShowForm();">


 <div class="container">
  //-----.HideMe{display:none;} is a css class----//

  <div id="PriceForm" class="HideMe">
     <app-pricedetails></app-pricedetails>
  </div>
  <app-pricemng></app-pricemng>
 </div>

步骤3:在下面的组件文件中,导入将$声明为以下代码:

declare var $: any;

而不是像下面这样创建函数:

 ShowForm(){
   $('#PriceForm').removeClass('HideMe');
 }

它将与最新的Angular和JQuery一起使用


0

首先,使用npm安装jQuery,如下所示:

npm install jquery  save

其次,转到Angular CLI项目文件夹根目录下的./angular-cli.json文件,找到脚本:[]属性,并包括jQuery的路径,如下所示:

"scripts": [ "../node_modules/jquery/dist/jquery.min.js" ]

现在,要使用jQuery,您所要做的就是将其导入您想使用jQuery的任何组件中。

import * as $ from 'jquery';
(or)
declare var $: any;

看一下下面的代码,该代码在单击时使用jQuery来使div动画化,特别是在第二行中。我们将所有内容从jQuery导入为$。

import { Component, OnInit  } from '@angular/core';
import * as $ from 'jquery';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  title = 'Look jQuery Animation working in action!';

  public ngOnInit()
  {
    $(document).ready(function(){
        $("button").click(function(){
            var div = $("div");  
            div.animate({left: '100px'}, "slow");
            div.animate({fontSize: '5em'}, "slow");
        });
    });
  }
}

-1

安装jQuery

终端机$ npm install jquery

(对于引导程序4 ...)

终端机$ npm install popper.js

终端机$ npm install bootstrap

然后将该import语句添加到中app.module.ts

import 'jquery'

(对于引导程序4 ...)

import 'popper.js'
import 'bootstrap'

现在您将不再需要 <SCRIPT>标签来引用JavaScript。

(您仍要在中引用要使用的任何CSS styles.css

@import "~bootstrap/dist/css/bootstrap.min.css";

-1

使用Angular时,请尽量不要使用jquery库。尝试使用为角度框架生成的功能和库。如果您想使用诸如find()html()最近的()等的jquery函数,我建议使用纯js。例如:querySelector()innerHTMLparentElement等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.