定义函数并在select语句中用作onchange,而不是直接使用.change(function)
Define function and use as onchange in the select statement instead of directly using .change(function)
定义一个函数并将其用作select语句中的onchange,而不是直接使用.change(function).有什么错
我想用这个来显示一个不同的组合框:
function MetricLayerShowHide (){
var type = $(this).val();
if( type !==''){
$('.content').hide();
$('#'+type).show();
}
}
<select name="MetricType" id="MetricType" onchange="MetricLayerShowHide();" >
<option value=CD>CD</option>
<option value=HT>HT</option>
<option value=Profile>Profile</option>
</select>
<div id="CD" style ="display: none" class ="content">
<SELECT NAME="LayerList" id="layer1">
</SELECT>
</div>
而不是
$(function(){
$('#MetricType').change(function(){
var type = $(this).val();
if( type !==''){
$('.content').hide();
$('#'+type).show();
}
});
});
不过这是有效的。
我哪里错了?
问题是,当您调用函数时,this
不再是元素。您正在全局上下文中调用函数,因此this
将是函数内的window
对象。
您可以使用call
方法调用元素作为上下文的函数:
onchange="MetricLayerShowHide.call(this);"
演示:http://jsfiddle.net/Guffa/co5ymkyk/
问题很简单:this
在调用函数时不再引用您期望的元素。
HTML:
<form>
<select name="MetricType" id="MetricType" >
<option value=CD>CD</option>
<option value=HT>HT</option>
<option value=Profile>Profile</option>
</select>
</form>
<div class="content" id="CD">CD</div>
<div class="content" id="HT">HT</div>
<div class="content" id="Profile">Profile</div>
脚本:
$(function(){
$('#MetricType').change(function(){
var type = $(this).val();
if( type !==''){
$('.content').hide();
$('#'+type).show();
}});
});
CSS:
.content { display: none; }
JSFiddle演示在这里。
附带说明一下,这是基于您作为评论发布的JSFiddle。您由于缺少一个括号而创建了一个新问题。
请更新你的问题,因为这个答案断章取义@古法实际上答对了你的问题。
相关文章:
- 直接在函数声明上使用function.prototype.bind
- jQuery:.click(function(){(element),collapse('show',f
- Selenium WebDriver and JavaScript change
- Bootstrap 3 Datepicker v4:dp.show和dp.change事件在Datepicker内联时不
- 如果连接类型为none,则Javascript Function Only警报
- 带有.change()的AJAX不起作用
- onLoad function phonegap android
- AngularJS ng-change not calling function
- $('input[type=checkbox]').change(function()
- model.on('change', function()) 无法正常工作
- IE<9 中 .change(function() JavaScript 的问题
- .change(function() 每当<选择>有输入时就会改变
- Dojo On.change function
- 定义函数并在select语句中用作onchange,而不是直接使用.change(function)
- jQuery .change function onload
- JavaScript: change function(this) to function(this.id)
- JS $('form').change(function())只触发第一个表单项
- Visibility JQuery Function (ready(), change()...)
- $(“input”).剑道中的change(function()
- Javascript / Jquery - Multiple on Change (function()