【问题标题】:Remove Directive From Dom using JQuery使用 JQuery 从 Dom 中删除指令
【发布时间】:2016-11-02 04:23:32
【问题描述】:

在 Internet Explorer 中,输入类型 ="date" 不起作用,并且 angular 指令插入以显示 jqueryUI datetimepicker。

但是,在 chrome 中,两者都显示,有没有办法使用 jquery 从元素中删除指令,这样当它允许输入类型日期时,只采用 html5 日期时间?

html:

<input id="date1" type="date" ng-model="date" jqdatepicker/>
<br/>
{{ date }}

javascript:

var datePicker = angular.module('app', []);

datePicker.directive('jqdatepicker', function () {
    return {
        restrict: 'A',
        require: 'ngModel',
         link: function (scope, element, attrs, ngModelCtrl) {
            element.datepicker({
                dateFormat: 'mm/dd/yy',
                onSelect: function (date) {
                    scope.date = date;
                    scope.$apply();
                }
            });
        }
    };
});

$(document).ready(function(){

$('#date1').removeAttr('jqdatepicker');
if ($('#date1')[0].type != 'date') {

}
});

http://jsfiddle.net/TAeNF/1420/

【问题讨论】:

  • 不要使用 jQuery 删除 angular 指令....使用 angular 来确定是否应该/不应该应用该指令。
  • 如果我们想通过jQuery删除代码是什么?或者我们不能?
  • 没有。这是可能的。这不是“角度方式”。你混合了 Angular 和 jQuery,你可以完全用 Angular 来做到这一点。

标签: javascript jquery angularjs


【解决方案1】:

我通过有条件地从指令返回解决了这个问题

http://jsfiddle.net/TAeNF/1421/

if ($('#date1')[0].type != 'date') {
    return {
        restrict: 'A',
        require: 'ngModel',
         link: function (scope, element, attrs, ngModelCtrl) {
            element.datepicker({
                dateFormat: 'mm/dd/yy',
                onSelect: function (date) {
                    scope.date = date;
                    scope.$apply();
                }
            });
        }
    };
    }
    else
    return null;
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    相关资源
    最近更新 更多