[英]jQuery - On Select Option Event
我试图做到这一点,所以当有人从我的列表中选择某个选项时,它将触发一个事件。 我知道您应该使用.change事件,但这对我不起作用。
签出下面的代码。
选择:
$co1 = array("English", "Math", "Science", "History");
for($c=1;$c<5;$c++){
echo '<select name="c'.$c.'" id="course'.$c.'" class="selectpicker"><option selected="selected" id="course'.$c.'" value="course'.$c.'" name="'.$c.'">Course '.$c.'</option>';
foreach ($co1 as &$cl1){
echo '<option value="'.$cl1.'" name="'.$cl1.'">'.$cl1.'</option>';
}
echo '</select>';
}
jQuery的:
<script>
$('#course1').change(function(){
$("#course2 option[value='Math']").each(function() {
$(this).remove();
});
})
</script>
我基本上是用PHP来制作的,所以有四个不同的选择选项,它们具有相同的选项,但评分系统的值却不同。 我想使用此脚本来制作它,因此当您为第一门课程选择“数学”时,它将从其他3门课程的列表中将其删除。
任何想法这将如何工作? 我正在寻求其他方法的建议。
使用delegation
$('body').delegate('#course1','change',function(){
$("#course2 option[value='Math']").each(function() {
$(this).remove();
});
})
尝试:
$("body").on("change","#course1",function () {
$("#course2").find("option[value='Math']").remove();
});
仅用于select
标记的属性name
和id
。 打开此链接以查看标准选择选项html标记。 如果这样做,则那里有两个相同的ID。 <select>
和您的第一个<option>
。
尝试将您的PHP更改为:
$co1 = array("English", "Math", "Science", "History");
for($c=1;$c<5;$c++){
echo '<select name="c'.$c.'" id="course'.$c.'" class="selectpicker">
<option selected="selected" value="course'.$c.'">Course '.$c.'</option>';
foreach ($co1 as &$cl1){
echo '<option value="'.$cl1.'">'.$cl1.'</option>';
}
echo '</select>';
}
这是我能想到的最短的时间:
$('#course1').change(function () {
$('#course2').find('option:gt(0)').remove().end().append($(this).find('option:gt(0)[value!=' + $(this).val() + ']').clone())
})
如果选择了课程1,则将从课程2中隐藏该选项,并显示用户是否在课程1中选择了另一个
$('#course1').change(function () {
var val = $(this).val()
if($('#course2').val()==val)
$('#course2').val($('#course2').children('option:first').val())
$("#course2 option").each(function () {
if ($(this).val() == val)
$(this).hide(); //change this line to $(this).remove() to remove permanently
//and remove the else part below
else
$(this).show()
});
})
请注意 ,完全删除后,您将无法再次显示它,因此我建议您在更改course1时使用show
and hide
希望我做对了。 试试这个小提琴
您可以仅.hide()
匹配当前所选内容的选项,然后再次显示.show()
显示当前:hidden
元素?
$('#course1').change(function(){
var sel = $(this).val();
$("#course2 option:hidden").show();
$("#course2 option[value='"+sel+"']").each(function() {
$(this).hide();
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.