当选择框下拉菜单显示/可见时,是否有任何jQuery事件被捕获?一旦显示了下拉列表,我就会尝试用值填充选择框。
<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,因为虽然它是通过使用值填充选择框来工作的,但一旦我进行了选择,脚本就会再次被调用,并且框将在一个永无止境的循环中重置。
发布于 2017-02-07 09:36:24
所以在某种程度上,这是我想出的解决方案。
第一次加载页面时,为var赋值为0。当选择框被单击时,该值立即增加1。然后该函数检查var现在是否等于1,如果等于1,则表示dropdown是打开的,并触发该函数。执行完需要执行的操作后,该值将减少2(新值为-1)。这样,当您在选择框中进行选择(再次单击)时,您只想在显示选择框时执行的任何操作都不会再次触发。但是,它将在您下次单击它时触发,因为该值将再次等于1。站起来,重复。
$(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
}
});
);发布于 2017-02-06 03:40:07
问得好,回答起来也很有趣。这可以通过使用' click‘来完成,是的,我知道每次你点击选择框时,它都会一直触发。但是等等,有一个技巧可以解决这个问题,我们可以为它设置一个标志。因此,在加载脚本时,标志(变量)为false,当您第一次单击select时,它将被设置为true,并且脚本将只执行一次。
$(document).ready(function() {
var first_time = false;
$('select').on('click', function() {
if (!first_time) {
console.log('Yes, here I am!');
first_time = true;
}
});
});<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option>One</option>
<option>Two</option>
</select>
https://stackoverflow.com/questions/42056269
复制相似问题