【问题标题】:Jquery loop runs twice on in bootstrap modalJquery 循环在引导模式中运行两次
【发布时间】:2016-09-06 06:09:43
【问题描述】:

我正在通过 ajax 生成引导模式的内容。当数据加载到其中时,我想遍历该模式中的每个“选择”(数量上是动态的)并提醒其名称和选定值,但它总是提醒我两次,第一次提醒所有默认选定值然后它会提醒我选择的那个。 我的动态引导内容生成代码如下

 $(document).on('click','.quick_view',function(e){
 e.preventDefault();
 var serverBaseUrl = '<?php echo base_url();?>';
 $(".modal-body").html('');
 $("#qv").modal('show');

 $.post(
   serverBaseUrl+'Ajax/productQuickView.php',
   {
     id:$(this).attr('data-id')    
   },
   function(html_response){
     $(".modal-body").html(html_response);
     return false;
   }

  );// post
 }); // Document dot on click quick view

当有人在模态中单击 id 为“alertselected”的按钮时,我的 Jquery 循环运行两次,其代码为

$(document).on('click','#alertselected',function(e){
  e.preventDefault();
  var serverBaseUrl = '<?php echo base_url();?>';
  $('select').each(function() {    
    var selectedOption = $(this).find('option:selected');
    alert('Value: ' + selectedOption.val() + ' Text: ' + selectedOption.text());
  }); //select dot each

}); // Document dot on click quick view

【问题讨论】:

  • 当页面到达$('select').each(function() 时,您必须在页面上显示多个选择框,甚至可能在完全不同的区域中。您可以尝试使$('select') 中的选择器更具体,例如$('.modal-body select'),这样您就不会抓住页面上的每个选择
  • @DelightedD0D 实际上它会正确地提醒我所有模式中的“选择”,但问题是,它会发出两次警报。例如,我在该模式中有 3 个选择,默认选定文本为“选择一个选项”。它首先提示“选择一个选项” 3 次,然后提示我从那些下拉列表中选择的值。
  • 您是否使用了任何可能会克隆选择框并隐藏原件的选择插件?
  • 不,我正在抓取所有数据,包括从 ajax 调用中选择的数据。所有这些选择本质上都是动态的。
  • 天啊,谢谢,非常感谢。我错过了一个,我有另一个“.modal-body”。现在知道了,将其更改为通过 id 填充。

标签: javascript jquery html ajax twitter-bootstrap


【解决方案1】:

您可以使用offunbindoff/unbind 事件,然后附加事件

$(document).off('click').on('click','#alertselected',function(e){ 
  ...//Rest of code
})

【讨论】:

  • 这对我来说不起作用,因为我尝试了这个。问题是还有另一个“.modal-body”使循环运行两次,一次用于默认值,一次用于选定值。感谢@DelightedD0D
猜你喜欢
  • 2018-06-25
  • 2020-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 2020-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多