窗口加载时无限循环问题

时间:2016-08-17 06:11:48

标签: jquery

我遇到了一个问题,即创建一个根据国家/地区名称更改货币的脚本。我已经编写了货币更改代码,它在更改功能触发后更改了货币。(现在在下面的代码中,我只是在这里写一下location.reload()来刷新页面)

我的问题是,我想在第一次加载窗口后根据国家名称选择货币但是它无限刷新页面。我只想加载页面一次。

注意:我在这里写的是location.reload(),只是为了理解我的更改功能确实刷新了页面(我已经编写了货币更改代码)

   <html>
   <head>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
   <script type="text/javascript">
     $(document).ready(function(){
      $.getJSON("http://freegeoip.net/json/", function (data) {
      var country = data.country_name;
      //alert(country);
      if (country=="Australia"){
        $("option[value='AUD']").attr('selected','selected').trigger('change');
      }
      });

      //change function
      $("#edit-selected-currency").change(function(){
       location.reload();
      });

      });
    </script> 
</head>
    <body>
      <select id="edit-selected-currency" name="selected_currency" >
      <option value="AUD">AUD</option>
      <option value="INR" >INR</option>
      <option value="USD">USD</option>
      </select>
   </body>
 </html>

3 个答案:

答案 0 :(得分:0)

试试这个:

<script type="text/javascript">
     $(document).ready(function(){
      $.getJSON("http://freegeoip.net/json/", function (data) {
      var country = data.country_name;
      //alert(country);
      if (country=="Australia"){
        $("option[value='AUD']").attr('selected','selected').trigger('change');
//change function
      $("#edit-selected-currency").change(function(){
       location.reload();
      });
      }
      });



      });
    </script>

答案 1 :(得分:0)

您可以删除trigger('change')这是一个解决方案,因为您在更改事件上重新加载页面。

但仍然需要触发您可以执行的触发事件,您可以检测触发事件,如下所述。

$(document).ready(function(){
    $.getJSON("http://freegeoip.net/json/", function (data) {
        var country = data.country_name;
        //alert(country);
        if (country=="Australia"){
            $("option[value='AUD']").attr('selected','selected').trigger('change','triggered');
        }
    });

    //change function
    $("#edit-selected-currency").change(function(e,x){
        if(x=='triggered')
        {
            // it is from trigger 
        }
        else
        {
            // here x is undefined
            location.reload();
        }
    });

});

答案 2 :(得分:-1)

删除trigger('change');将解决问题。