2017-09-20 26 views
1

これらの関数はjqueryで記述します。私の1つの機能はonclickで、もう1つはonready機能です。私はこの変数 "loadmorecount_rest_num"を私のonready関数で使いたいと思う。私のonready関数でこの変数 "loadmorecount_rest_num"を使うにはどうすればいいですか?Jqueryは1つの関数から別の関数に1つの変数を使用します。

jquery.Nowを使用して、データベースのより多くの値をデータベースからロードするためのこれらのスクリプトを作成します。データが "var loadmorecount_rest_num < 0"。ready機能の場合は、もっと多くのボタンを非表示にします。 今、私はonclickイベントを使用してそのボタンを非表示にしています。私はreadyイベントでそれを隠したいと思っています。

var STATUS= $('#status').val(); 
var TYPE= $('#Property').val(); 
var ADDRESS= $('#Address').val(); 
var MINA= $('#min_area').val(); 
var MAXA= $('#max_area').val(); 
var MINP= $('#min_price').val(); 
var MAXP= $('#max_price').val(); 
var MINIMUMBED= $('#minbed').val(); 
var MAXIMUMBED= $('#maxbed').val(); 
var MINBATHROOM= $('#minbath').val(); 
var MAXBATHROOM= $('#maxbath').val(); 

var total_data_count= $('#total_data_count').val(); 
var MINL = $("#minimum_limit").val(); 
var current_data_count = $("#page_data_count").val(); 
var MAXL = $("#maximum_limit").val(); 
var new_start_limit= parseInt(MAXL)+parseInt(MINL); 
$("#minimum_limit").val(new_start_limit); 
var data_start_limit_pass = $('#minimum_limit').val(); 
var data_max_limit_pass = $('#maximum_limit').val(); 

$.ajax({ 

      type : 'POST', 
      url : '<?php echo MY_SITE_URL ;?>'+'webapi.php', 
       data :{task:'Properties.loadmore',MINL:new_start_limit,MAXL:MAXL,STATUS:STATUS,TYPE:TYPE,ADDRESS:ADDRESS,MINA:MINA, 
      MAXA:MAXA,MINP:MINP,MAXP:MAXP,MINIMUMBED:MINIMUMBED,MAXIMUMBED:MAXIMUMBED,MINBATHROOM:MINBATHROOM,MAXBATHROOM:MAXBATHROOM}, 
       // data :{task:'Properties.loadmore',MINL:new_start_limit,MAXL:MAXL,get_data:get_data}, 
      error: function() { 
      console.log('somthing wrong'); 
      }, 

      success: function(response) { 
       var json_data= JSON.parse(response); 
       var Properties=json_data.Response; 
       var count = json_data.Response.length; 
       var old_current_data_count = $('#page_data_count').val(); 
       var new_current_data_count= parseInt(old_current_data_count)+ parseInt(count); 
       $('#page_data_count').val(new_current_data_count); 

       var html=''; 

       $.each(Properties, function(key, value) { 

        var nowDate = new Date(); 
        var oneDay = 24*60*60*1000; 
        var secondDate = new Date(value.system_insert_date); 
        var diffDays = Math.round(Math.abs((nowDate.getTime() - secondDate.getTime())/(oneDay))); 
        // console.log(diffDays); 

        html = html+'<div class="listing-item">'; 
         html = html+'<a href="#" class="listing-img-container">'; 
          html = html+'<div class="listing-badges">'; 
           html = html+'<span>'+value.current_status+'</span>'; 
          html = html+'</div>'; 
          html = html+'<div class="listing-img-content">'; 
           html = html+'<span class="listing-price">$'+value.close_price+'<i>'+value.list_price_per_sqft+'/ sq ft</i></span>'; 
           html = html+'<span class="like-icon"></span>'; 
          html = html+'</div>'; 
          html = html+'<img src="images/listing-05.jpg" alt="">'; 
         html = html+'</a>'; 

         html = html+'<div class="listing-content">'; 
          html = html+'<div class="listing-title">'; 
             html = html+'<h4><a href="#" class="listing-address popup-gmaps">'+value.street_number+','+value.street_name+'</a></h4>'; 
             html = html+'<a href="https://maps.google.com/maps?q='+value.google_address+'" class="listing-address popup-gmaps">'; 
              html = html+'<i class="fa fa-map-marker"></i>'; 
              html = html+''+value.google_address+''; 
             html = html+'</a>'; 
             html = html+'<a href="#" class="details button border">Details</a>'; 
          html = html+'</div>'; 
           html = html+'<ul class="listing-details">'; 
            html = html+'<li>'+value.sqft+' Sqft</li>'; 
            html = html+'<li>'+value.beds+' Beds</li>'; 
            html = html+'<li>N/A</li>'; 
            html = html+'<li>'+value.bathfull+' Baths</li>'; 
            html = html+'<li>'+value.bathhalf+' Half Baths</li>'; 
           html = html+'</ul>'; 
            html = html+'<div class="listing-footer">'; 
             html = html+'<a href="#"><i class="fa fa-user"></i>'+value.listing_office_name+'</a>'; 
             html = html+'<span><i class="fa fa-calendar-o"></i>'+diffDays+' Days ago</span>'; 
            html = html+'</div>'; 
          html = html+'</div>'; 
         html = html+'</div>'; 


       }); 
         $('#propertysearch').append(html); 
         $("#loadmore_btn").show(); 
         $("#loadmorecount_rest").html(''); 
         var loadmorecount_rest_num = parseInt(total_data_count)-(data_start_limit_pass)-(data_max_limit_pass); 
         $("#loadmorecount_rest").html(loadmorecount_rest_num); 
         var current_num_data=$('#page_data_count').val() ; 


          if(loadmorecount_rest_num==0 || loadmorecount_rest_num<0){ 

         $("#loadmore_btn").hide(); 
        } 
        else{ 
         $("#loadmore_btn").show(); 
        }  


     } 
}); 

});

$(document).ready(function(){ 

}); 
+1

どのように問題になりますか?いずれのボタンのオンクリックも、ドキュメントの準備完了イベントの後に実行されます。 – dev8080

答えて

1

準備機能の中では、onclick機能を使用する方がよいでしょう。このリンクを見てみましょう:Why should $.click() be enclosed within $(document).ready()?

あなたはこのような何か行うことができます:上部に

function yourFunction(loadmorecount_rest_num){ 
    $("#loadmore_btn").on("click", function() { 
     $("#loadmore_btn").show(); 
     $("#loadmorecount_rest").html(''); 
     loadmorecount_rest_num = parseInt(total_data_count)-(data_start_limit_pass)-(data_max_limit_pass); 
     $("#loadmorecount_rest").html(loadmorecount_rest_num); 
     var current_num_data=$('#page_data_count').val() ; 
     if(loadmorecount_rest_num==0 || loadmorecount_rest_num<0) 
     { 
      $("#loadmore_btn").hide(); 
     } 
     else{ 
      $("#loadmore_btn").show(); 
     }  
    }); 
} 
$(document).ready(function(){ 
    var loadmorecount_rest_num = 0; 
    yourFunction(loadmorecount_rest_num); 
}) 
-1

宣言VAR loadmorecount_rest_num

$(document).ready(function(){ 
    var loadmorecount_rest_num = 0; 

    $("#loadmore_btn").on("click", function() { 
     $("#loadmore_btn").show(); 
     $("#loadmorecount_rest").html(''); 
     loadmorecount_rest_num = parseInt(total_data_count)-(data_start_limit_pass)-(data_max_limit_pass); 
     $("#loadmorecount_rest").html(loadmorecount_rest_num); 
     var current_num_data=$('#page_data_count').val() ; 
     if(loadmorecount_rest_num==0 || loadmorecount_rest_num<0) 
     { 
      $("#loadmore_btn").hide(); 
     } 
     else{ 
      $("#loadmore_btn").show(); 
     }  
    }); 
    //You can use var loadmorecount_rest_num inside document ready now. 
}) 

はこのように、機能を使用して、コードを囲むようにしてくださいをすなわち、 $("#loadmore_btn").on("click", function() { ... の前にこれはあなたの変数をグローバルにします&あなたは他の機能でそれにアクセスすることができます。

- または -

は、単にあなたの変数loadmorecount_rest_numからVARを削除して、別の機能にアクセスしてみてください。

0

あなたがやろうとしている正確に何に多くを得ることなく、私が提案できる一つのことは、次のとおりです。

window.loadmorecount_rest_num = parseInt(total_data_count)-(data_start_limit_pass)-(data_max_limit_pass); 

これはグローバルオブジェクト(ウィンドウ)にloadmorecount_rest_numを添付します。 これは良い方法ではありません。このクリックリスナー関数を準備関数自体から呼び出すこともでき、の値を準備関数に戻して、どこでも使用できます。

または、他の人々がready関数内で変数loadmorecount_rest_numを宣言し、ready関数内からリスナーを呼び出すことを提案しているので。それはloadmorecount_rest_numの最後の状態を維持します。

0

$(document).ready の下に関数をラップし、この変数をこのような他の関数で使用する場合は、関数の範囲外のグローバル変数を定義することができます。

$(document).ready(function(){ 

var loadmorecount =0; 

$("#loadmore_btn").on("click", function() { 
    $("#loadmore_btn").show(); 
     $("#loadmorecount_rest").html(''); 
     loadmorecount_rest_num = parseInt(total_data_count)-(data_start_limit_pass)-(data_max_limit_pass); 
     $("#loadmorecount_rest").html(loadmorecount_rest_num); 
     var current_num_data=$('#page_data_count').val() ; 
     if(loadmorecount_rest_num==0 || loadmorecount_rest_num<0) 
     { 
       $("#loadmore_btn").hide(); 
     } 
     else{ 
       $("#loadmore_btn").show(); 
     }  
}); 

function someOtherFunction(){ 
//make use of global variable loadmorecount 
} 

someOtherFunction(); //call function 
}) 
関連する問題