[英]How to apply a function to option selected tag?
我有以下下拉列表:
<select id="role" name="role" class="form-control">
<option selected>Choose an option</option>
{% for index, value in roles_form.fields.roles.choices %}
<option value="{{ index }}">{{ value }}</option>
{% endfor %}
</select>
当用户在选项之间进行选择时,我有一个显示和隐藏另一个div的函数:
$('select').on('change', function() {
var developer = {{ developer_id }};
var value = $(this).val();
console.log(developer);
if (value == developer) {
$('#github_link').show();
} else {
$('#github_link').hide();
}
})
因此,当用户选择Developer
,div仍会显示,当他们选择任何其他选项时,该div隐藏。 一切正常,但有一件事,当页面加载此标签时: <option selected>Choose an option</option>
保持显示的div,这是不正确的,当页面加载div时也需要隐藏。
但是我不太确定如何将其添加到函数中,任何想法?
如果您的问题是您希望此逻辑在页面加载和更改时运行,那么您只需触发它即可。
$(...).on('change', ...).trigger('change');
trigger
将导致事件处理程序立即执行。
你可以简单地添加
style="display: none;"
在HTML中定义它时,在具有github_link
id
的标记中。 显示它并隐藏它将起作用。
虽然定义一个CSS class
更为优雅:
.invisible {
display: none;
}
并使用addClass
/ removeClass
隐藏/显示标记,因为据我所知, show()
和hide()
不是jQuery中最快的功能:
$('select').on('change', function() {
var developer = {{ developer_id }};
var value = $(this).val();
console.log(developer);
$("#github_link")[((value == developer) ? "remove" : "add") + "Class"]("invisible");
})
当您的选择被更改时,您的脚本会加载,因此要在页面加载时使其工作,您需要将其置于任何事件之外
var developer = {{ developer_id }};
$('select').on('change', function() {
var value = $(this).val();
console.log(developer);
if (value == developer) {
$('#github_link').show();
} else {
$('#github_link').hide();
}
})
// Outside any events as well
var value = $('select').val();
if (value == developer) {
$('#github_link').show();
} else {
$('#github_link').hide();
}
或者为了使它更简单,我们可以将它放在一个函数中:
var developer = {{ developer_id }};
function fName(value){
if (value == developer) {
$('#github_link').show();
} else {
$('#github_link').hide();
}
}
$('select').on('change', function() {
var value = $(this).val();
console.log(developer);
fName(value)
});
fName($('select').val());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.