更改选项的事件,甚至点击所选选项

时间:2017-12-11 11:27:22

标签: javascript jquery html javascript-events

这是我目前的代码:

$('select').on('change', function(){
  console.log('An option selected (it can be even the old option)')
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
  <option>1</option>
  <option selected>2</option>
  <option>3</option>
</select>

正如您所看到的,当我点击第二个选项2,默认选中一个)时,该事件不会发生。这正是我想要发生的事情:-)

换句话说,我希望根据这条消息使其有效:

  

选择了一个选项(它甚至可以是旧选项)

我知道如何处理它?<​​/ p>

注意到这不起作用:

$('select > option').on('click', function(){

2 个答案:

答案 0 :(得分:0)

试试这个

$('select').on('change', function(){ console.log('An option selected (it can be even the old option)') }).trigger('change')

&#13;
&#13;
$('select').on('change', function() {
  console.log('An option selected (it can be even the old option)')
}).trigger('change');
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<select>
  <option>1</option>
  <option selected>2</option>
  <option>3</option>
</select>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果要检测第一个选择,可以考虑使用功能绑定而不是选择更改;

function myFunction(target){
   console.log($(target).children("option:selected").val())
}
select {

  /* styling */
  background-color: white;
  border: thin solid blue;
  border-radius: 4px;
  display: inline-block;
  font: inherit;
  line-height: 1.5em;
  padding: 0.5em 3.5em 0.5em 1em;

  /* reset */

  margin: 0;      
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  -webkit-appearance: none;
  -moz-appearance: none;
}


/* arrows */

select.classic {
  background-image:
    linear-gradient(45deg, transparent 50%, blue 50%),
    linear-gradient(135deg, blue 50%, transparent 50%),
    linear-gradient(to right, skyblue, skyblue);
  background-position:
    calc(100% - 20px) calc(1em + 2px),
    calc(100% - 15px) calc(1em + 2px),
    100% 0;
  background-size:
    5px 5px,
    5px 5px,
    2.5em 2.5em;
  background-repeat: no-repeat;
}

select.classic:focus {
  background-image:
    linear-gradient(45deg, white 50%, transparent 50%),
    linear-gradient(135deg, transparent 50%, white 50%),
    linear-gradient(to right, gray, gray);
  background-position:
    calc(100% - 15px) 1em,
    calc(100% - 20px) 1em,
    100% 0;
  background-size:
    5px 5px,
    5px 5px,
    2.5em 2.5em;
  background-repeat: no-repeat;
  border-color: grey;
  outline: 0;
}



select.minimal {
  background-image:
    linear-gradient(45deg, transparent 50%, gray 50%),
    linear-gradient(135deg, gray 50%, transparent 50%),
    linear-gradient(to right, #ccc, #ccc);
  background-position:
    calc(100% - 20px) calc(1em + 2px),
    calc(100% - 15px) calc(1em + 2px),
    calc(100% - 2.5em) 0.5em;
  background-size:
    5px 5px,
    5px 5px,
    1px 1.5em;
  background-repeat: no-repeat;
}

select.minimal:focus {
  background-image:
    linear-gradient(45deg, green 50%, transparent 50%),
    linear-gradient(135deg, transparent 50%, green 50%),
    linear-gradient(to right, #ccc, #ccc);
  background-position:
    calc(100% - 15px) 1em,
    calc(100% - 20px) 1em,
    calc(100% - 2.5em) 0.5em;
  background-size:
    5px 5px,
    5px 5px,
    1px 1.5em;
  background-repeat: no-repeat;
  border-color: green;
  outline: 0;
}


select:-moz-focusring {
  color: transparent;
  text-shadow: 0 0 0 #000;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="classic" onclick="myFunction(this)">
  <option>1</option>
  <option selected>2</option>
  <option>3</option>
</select>