2013-12-23 3 views
0

** Здравствуйте,Простой повторно с помощью функции JQuery

Как повторно использовать функцию JQuery для различных переменных? **

Мой рабочий пример позволяет несколько представлений в форме. Когда достигнут порог - функция скрывает #form и показывает #block. Он также отображает количество оставшихся сообщений.

Мой код может управлять только одной формой - но мне нужно несколько форм и порогов.

Может ли кто-нибудь помочь мне установить индивидуальные пороговые значения для каждой формы ???

В каждой форме (# form1, # form2, # form3) есть каждый счетчик (# entry_count1, # entry_count2, # entry_count3).

Я хотел бы установить:

(threshold1) для (формы № 1)

(порог2) для (формы № 2)

(порог3) для (форма № 3)

....

Рабочий код:

<script type="text/javascript"> 

var threshold1 = 30; // Set this to the # of entries to trigger on 
var threshold2 = 12; 
var threshold3 = 24; 

var form1_to_hide = ["#form1”]; // CSS selectors of forms to hide when triggered 
var form2_to_hide = ["#form2”]; 
var form3_to_hide = ["#form3”]; 
var block_to_show = [“#block”]; // CSS selector of block to show when triggered 


// The function 
$(function(){ 

$('#entry_count1’).on('changed.content', function(event){ 
var count1 = parseInt($('.ss_entry_count_value', this).text()); 
var currentCount1 = threshold1 - count1; 


if(count1 >= threshold1){ 


$.each(form1_to_hide, function(i) 
{ 
$(form1_to_hide[i]).hide(); 
}); 
$.each(block_to_show, function(i){ 
$(block_to_show[i]).show(); 
}); 
} 

    if(count1 >= threshold1) 
{ 
$.each(form1_to_hide, function(i){ 
$(form1_to_hide[i]).hide(); 
}); 
$.each(block_to_show, function(i){ 
$(block_to_show[i]).show(); 
}); 
} 

$("#result1”).text(currentCount1); 

}); 
}); 

</script> 

ответ

0

Я не знаю, если я получаю ваш вопрос ясно, но вот выстрел:

То, что люди, которые используют JQuery сделать много, это использовать «анонимные функции». Вы увидите их вот так:

$('someID').on('eventName', function() { 
    // the anonymous function body 
}); 

Анонимная функция (насколько мне известно) противоречит повторного использования кода. Потому что, поскольку у него нет имени, вы не можете действительно ссылаться на него. ... Уверен, вы всегда можете сделать

var myFunction = function() { 
    // anonymous function body 
}; 

... чтобы уловить анонимную функцию в «имени». Но тогда я бы сказал, просто сделай это «нормальный» JavaScript способ:

function myFunction() { 
    // normal function body 
} 

Чтобы повторно использовать этот код в JQuery, просто сделать:

$('someID').on('eventName', myFunction); 

Он будет работать с анонимными функциями в вар, и с «нормальными» функциями.

0

Лучше использовать массив для настройки значения, как,

<script type="text/javascript"> 

var threshold_config = [ 
          {limit: 30, forms_to_hide : ["#form1"], block_to_show:["block"] }, 
          {limit: 12, forms_to_hide : ["#form2"], block_to_show:["block"] }, 
          {limit: 24, forms_to_hide : ["#form3"], block_to_show:["block"] } 
         ]; 


// The function 
$(function(){ 

    $('#entry_count1’).on('changed.content', function(event){ 
    var count1 = parseInt($('.ss_entry_count_value', this).text()); 
    var currentCount1 = threshold1 - count1; 

    $.each(threshold_config, function(index) 
    { 
     var threshold1 = threshold_config[index].limit; 
     var form1_to_hide = threshold_config[index].forms_to_hide; 
     var block_to_show = threshold_config[index].block_to_show; 
     if(count1 >= threshold1){ 


      $.each(form1_to_hide, function(i) 
      { 
       $(form1_to_hide[i]).hide(); 
      }); 
      $.each(block_to_show, function(i){ 
       $(block_to_show[i]).show(); 
      }); 
     } 

     if(count1 >= threshold1) 
     { 
      $.each(form1_to_hide, function(i){ 
       $(form1_to_hide[i]).hide(); 
      }); 
      $.each(block_to_show, function(i){ 
       $(block_to_show[i]).show(); 
      }); 
     } 

     $("#result1").text(currentCount1); 

    }); 

    }); 

}); 

</script> 

это должно работать, я не проверял ...

Смежные вопросы