2014-05-07 5 views
-3

Я нашел код для создания простых вкладок. Он работает для каждого (одного) экземпляра класса. Но что, если у меня есть 2 разных класса, и мне нужно, чтобы они делали то же самое для обоих классов?Как повторно использовать функцию?

Я в настоящее время дублирую функцию. Я знаю, это бьет цель построения функции. Следовательно, вопрос новичков: как мне повторно использовать код функции для нескольких классов.

Спасибо!

$('.class1').each(function(){ 
    // code for making tabs work 
    // 
}); 


$('.class2').each(function(){ 
    // code for making tabs work 
    // 
}); 
+3

Э ... вы положили его внутри функции? 'function foo() {...}' '$ (" whatever "). each (foo)'. Обратите внимание, что ваш конкретный пример также может быть рассмотрен просто с помощью '$ (". Class1, .class2 "). Each (...)'. – Jon

+1

К сожалению ... здесь нет обработчика событий. Но на самом деле это не имеет значения. Вы, кажется, не очень хорошо знакомы с функциями, поэтому я предлагаю прочитать учебник о них (или трех): http://eloquentjavascript.net/chapter3.html, https://developer.mozilla.org/en- US/docs/Web/JavaScript/Guide/Functions, http://quirksmode.org/js/function.html –

+0

Или вы можете использовать общий класс ... Назовем его 'class3' –

ответ

0

Вы можете объявить функцию, которая делает ваши вкладки работают в других местах, например, что:

function makeTabsWork() 
{ 
    // code for making tabs work 
} 

, а затем назначить эту функцию для отдельных классов, например, так:

$('.class1').each(makeTabsWork); 

$('.class2').each(makeTabsWork); 

A более эффективным способом сделать это, однако, является следующее:

$('.class1, .class2').each(makeTabsWork); 

Однако, поскольку у вас есть два разных экземпляров класса, которые вы хотите, чтобы активировать с помощью JavaScript, вы можете просто присвоить общий признак, например:

<div class="class1" rel="nav"> 

и

<div class="class2" rel="nav"> 

и только вызовите функцию один раз так:

$('div[rel=nav]').each(makeTabsWork); 
+0

Отлично! Это работает! Огромное спасибо. – Roon

+0

Не проблема (: – escproxy

0

Вы можете определить функцию в начале вашего JavaScript следующим образом:

<script type="text/javascript> 
    function foo() { 
    } 
</script> 

А позже вы можете назвать это как:

$(".class1").each(foo); 

Это только один из МНОГИХ подходов, хотя. Я настоятельно рекомендую прочитать больше об основном синтаксисе Javascript, чтобы найти другие способы решения вашей проблемы!

Один учебник, который может помочь is here. Если у кого-то еще есть предложения по учебникам, не стесняйтесь редактировать мой ответ или предлагать их в комментариях!

Различные подходы

// define a global function 
function globalFoo() { }; 

// Define a global function as a variable: 
var globalFooVar = function() { }; 

// or in run: 
$(function() { 
    // define your function inside of run (scoped definition) 
    function scopedFoo() { }; 

    // or a scoped variable 
    var scopedFooVar = function() { }; 


    // but no matter how you define it you basically use it the same way: 
    $("selector").each(globalFoo); 
    $("selector").each(globalFooVar); 
    $("selector").each(scopedFoo); 
    $("selector").each(scopedFooVar); 
}); 
+0

Спасибо drew_w, оцените вашу помощь и время. – Roon

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