2016-08-19 65 views
0

我已經在JavaScript中聲明瞭一個函數,並在其中添加了一些JQuery代碼,並且我在click事件中調用了此函數,並且它沒有被調用。 而當我用function關鍵字定義一個函數期望函數時,所以我必須使用函數作爲表達式。該函數在點擊事件之外被調用,比如在文檔準備好時全局調用。不能調用在javascript中聲明的函數

的JavaScript

var item_width = $('.item-slider').width(); 
var item_margin = (item_width-600)/5; //sum of 4 elements divided by 5 margin spaces 
var items = $('ul.item-slider>li'); 
var x = 0; 
$.each(items,function(index){ 
    $(this).data("id",x); 
    x = x+1; 
}); 

var x = function(){ 
    $.each(items,function(index){ 
     var pos = $(this).data('id'); 

     if($(this).data('id') < 1){ 
      var left =(pos-1) * 150 + (pos-1) * 10; 
      -Math.abs(left); 
      $(this).css("left",left); 
     } 
     else if($(this).data('id') === 1){ 
      $(this).css("left", 0); 
      console.log("positon is set to" + $(this).css("left")); 
     }   
     else if($(this).data('id') > 1){ 
      var left = (pos-1) * 150 + (pos-1) * 10; 
      $(this).css("left", left); 
      console.log("positon is set to " + $(this).css("left")); 
     } 
    }); 
} 

// commented x(); 

$(".explore_matches > button[name = 'pre']").click(function(){ 
    $.each(items,function(index){ 
     console.log("each working"); 
     $(this).data('id',"abc"); 
    }) 
    x(); 
    console.log("skipped"); 
}); 
+0

你試圖重新聲明'x'多次。 'var x = 0;','var x = function(){}'。這是錯誤的。您只能將其decalre一次。 – eisbehr

+0

即使我更改爲另一個變量名稱,它仍然不會工作, –

+0

請在[mcve]中使用jQuery和HTML。 – zer00ne

回答

1
var item_width = $('.item-slider').width(); 
var item_margin = (item_width-600)/5; //sum of 4 elements divided by 5 margin spaces 
var items = $('ul.item-slider>li'); 
var x = 0; 
$.each(items,function(index){ 
    $(this).data("id",x); 
    x = x+1; 
}); 

function needToCall(){ 
    $.each(items,function(index){ 
     var pos = $(this).data('id'); 

     if($(this).data('id') < 1){ 
      var left =(pos-1) * 150 + (pos-1) * 10; 
      -Math.abs(left); 
      $(this).css("left",left); 
     } 
     else if($(this).data('id') === 1){ 
      $(this).css("left", 0); 
      console.log("positon is set to" + $(this).css("left")); 
     }   
     else if($(this).data('id') > 1){ 
      var left = (pos-1) * 150 + (pos-1) * 10; 
      $(this).css("left", left); 
      console.log("positon is set to " + $(this).css("left")); 
     } 
    }); 
} 



$(".explore_matches > button[name = 'pre']").click(function(){ 
    $.each(items,function(index){ 
     console.log("each working"); 
     $(this).data('id',"abc"); 
    }) 
    needToCall(); 
    console.log("skipped"); 
});