首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dropdown事件上的jQuery,dropdown可见

dropdown事件上的jQuery,dropdown可见
EN

Stack Overflow用户
提问于 2017-02-06 03:28:51
回答 2查看 1.8K关注 0票数 1

当选择框下拉菜单显示/可见时,是否有任何jQuery事件被捕获?一旦显示了下拉列表,我就会尝试用值填充选择框。

代码语言:javascript
复制
<select id="foo">
   <option value="">----</option>
   <option selected="selected" value="1"> Option1 </option>                           
   <option value="2"> Option 2 </option>
</select>

//I need something like this
jQuery('#foo:dropdown').on('visible', function(){
  //Do what you need to do
});

我尝试使用on change,但这不是我要寻找的确切事件,因为我试图在实际进行任何选择之前用值填充框。此外,我不能使用on click,因为虽然它是通过使用值填充选择框来工作的,但一旦我进行了选择,脚本就会再次被调用,并且框将在一个永无止境的循环中重置。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-07 09:36:24

所以在某种程度上,这是我想出的解决方案。

第一次加载页面时,为var赋值为0。当选择框被单击时,该值立即增加1。然后该函数检查var现在是否等于1,如果等于1,则表示dropdown是打开的,并触发该函数。执行完需要执行的操作后,该值将减少2(新值为-1)。这样,当您在选择框中进行选择(再次单击)时,您只想在显示选择框时执行的任何操作都不会再次触发。但是,它将在您下次单击它时触发,因为该值将再次等于1。站起来,重复。

代码语言:javascript
复制
$(document).ready(function() {
    var aa = 0;
    $('#foo').on('click', function () {  
      aa++;      
      if (aa == 1) { //Basically, is dropdown open?
        //Do what you need to do when dropdown is open
        aa = -1; //Now assign new value to aa
      }         
    });  
 );
票数 0
EN

Stack Overflow用户

发布于 2017-02-06 03:40:07

问得好,回答起来也很有趣。这可以通过使用' click‘来完成,是的,我知道每次你点击选择框时,它都会一直触发。但是等等,有一个技巧可以解决这个问题,我们可以为它设置一个标志。因此,在加载脚本时,标志(变量)为false,当您第一次单击select时,它将被设置为true,并且脚本将只执行一次。

代码语言:javascript
复制
$(document).ready(function() {
  var first_time = false;
  $('select').on('click', function() {
    if (!first_time) {
      console.log('Yes, here I am!');
      first_time = true;
    }
  });
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
  <option>One</option>
  <option>Two</option>
</select>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42056269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档