我有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);
事情是这两个功能不起作用
答案 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);