简体   繁体   English

更改另一个滑块时更新材质滑块UI

[英]Update Material slider UI when another slider is changed

I'm in trouble with my inputs. 我的输入有问题。 Both of the inputs are connected. 两个输入都已连接。 When you click on the first one, the second inputs will move but the css will not update. 当您单击第一个输入时,第二个输入将移动但css将不会更新。

 var $ra1 = $('#range1'); var $ra2 = $('#range2'); $ra1.on('input', function() { $ra2.val(this.max - this.value); }); $ra2.on('input', function() { $ra1.val(this.max - this.value); }); 
 <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> <link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css"> <script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> Range 1 <input type="range" min="0" max="400" value="0" class="mdl-slider mdl-js-slider " id="range1"> Range 2 <input type="range" min="0" max="400" value="400" class="mdl-slider mdl-js-slider" id="range2"> 

在此输入图像描述

EDIT: I found a workaround for IE11 编辑:我找到了IE11的解决方法

 var $ra1 = $('#range1'); var $ra2 = $('#range2'); if (navigator.appName == 'Microsoft Internet Explorer' || !!(navigator.userAgent.match(/Trident/) || navigator.userAgent.match(/rv:11/)) || (typeof $.browser !== "undefined" && $.browser.msie == 1)){ $ra1.change(function(){ $ra2.get(0).MaterialSlider.change(this.max - this.value); }); $ra2.change(function(){ $ra1.get(0).MaterialSlider.change(this.max - this.value); }); }else{ $ra1.on('input', function() { $ra2.get(0).MaterialSlider.change(this.max - this.value); }); $ra2.on('input', function() { $ra1.get(0).MaterialSlider.change(this.max - this.value); }); } 
 <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> <link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css"> <script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> Range 1 <input type="range" min="0" max="400" value="0" class="mdl-slider mdl-js-slider " id="range1"> Range 2 <input type="range" min="0" max="400" value="400" class="mdl-slider mdl-js-slider" id="range2"> 

For this to work you need to set the value through the Material library, not jQuery, in order for it to update the UI. 为此,您需要通过Material库而不是jQuery设置值,以便更新UI。 To do that, use the change function on the MaterialSlider property of the DOM element, like this: 为此,请在DOM元素的MaterialSlider属性上使用change函数,如下所示:

 var $ra1 = $('#range1'); var $ra2 = $('#range2'); $ra1.on('input', function() { $ra2.get(0).MaterialSlider.change(this.max - this.value); }); $ra2.on('input', function() { $ra1.get(0).MaterialSlider.change(this.max - this.value); }); 
 <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> <link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css"> <script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> Range 1 <input type="range" min="0" max="400" value="0" class="mdl-slider mdl-js-slider " id="range1"> Range 2 <input type="range" min="0" max="400" value="400" class="mdl-slider mdl-js-slider" id="range2"> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM