jQuery具有不同属性的select属性onchange的两个函数

时间:2017-09-22 14:01:42

标签: javascript jquery

我有1个选择属性 我有一些东西要触发选择

第一

<select id="select-room" data-room="inhouse"></select>

第二

<select id="select-room" data-room="ar_account"></select>

我已经做过这件事,就是当我为这件事做一个功能时它不会像:

 $('#select-room').on('change','[data-room="inhouse"]', this.Change1);
 $('#select-room').on('change','[data-room="ar_account"]', this.Change2);

事情是这两个功能不起作用

2 个答案:

答案 0 :(得分:1)

首先,你不应该为多个元素使用相同的id,selector只会定位第一个匹配的元素,我已经在代码中将它更改为class。如果问题是数据室正在更改元素,您可以在此处使用事件委派,并将事件附加到文档,或者附加到某个父元素,如下所示:

$scope.viewfile = function(name) {
                $http({
                method : 'POST',
                url : '/search/searchFiles',    
                data : {'currentdropdownvalue' : name} ,
            }).
            success(function(data){ 
                if (!angular.isUndefined(data.docs[0])){
                $scope.file = data.docs[0]._id;
                var fileUrl = $scope.cloudantUrl + $scope.file +"/"+ $scope.file;       
                $http.get(fileUrl {responseType:'arraybuffer'})
                .success(function (response) {
                     var file = new Blob([response], {type: 'application/pdf'});
                     var fileURL = URL.createObjectURL(file);
                     $scope.content = $sce.trustAsResourceUrl(fileURL);
                     $scope.contentType = "application/pdf";
                     $scope.contentWords = null;
                }).error(function(data){
                    console.log("Printing Error inside Post of view " , data);
                }); 
                }
                     else{
                        $scope.content = null;
                        $scope.contentWords = "File is not available for the selected Name";
                     }



            }).
            error(function(data){ 
                console.log("Printing Error inside view  " , data);
            });
        };
    }

答案 1 :(得分:1)

一个DOM中不应该有相同的id。因为当你这样做时,DOM会从顶部搜索id(这里是&#34; select-room&#34;),它会考虑第一个id。

因此,多次使用相同的ID是一个坏主意。请改用class

<select class="select-room" data-room="inhouse"></select>
<select class="select-room" data-room="ar_account"></select>

$('.select-room[data-room="inhouse"]').on('change', this.Change1);
$('.select-room[data-room="ar_account"]').on('change', this.Change2);