2010-06-23 4 views
3

comment créer sa propre fonction et l'appeler une autre fonction? comme-comment créer sa propre fonction dans JQuery?

$('.mycls li').hover(function() {  
var divid = $(this).find('li').attr('some_attr'); 
call myfunc(divid); 
}); 

function myfunc(divid) 
{ 
$(divid).show(); 
//I want to hide rest all divs 
$('div#info1').hide(); 
$('div#info2').hide(); 
$('div#info3').hide(); 
} 

J'ai 2 questions que l'on est de savoir comment mettre en œuvre cette logique dans jquery seconde est que l'attribut peut être utilisé pour faire référence à la li spécifique div spécifique

mes divs sont as-

<div id="info1"> 
//some information 
</div> 
<div id="info2"> 
</div> 
.... 
+1

Vous avez déjà répondu à votre première question. Quant à la seconde ... Je ne comprends pas, s'il vous plaît clarifier. Je pense que vous devez montrer plus de votre balisage HTML. –

+0

@Kling Je veux juste appeler myfunc() au passage de la souris des éléments li. – nectar

Répondre

5

Vos fonctions devraient pouvoir fonctionner sur l'ensemble emballé comme d'autres méthodes/fonctions de jquery. Considérons un plug-in, il est facile:

jQuery Plugin Tutorial

Ou voir:

Defining your own functions in jQuery

+0

un coup d'oeil sur mon code est-il correct- nectar

1

Il n'y a aucun mot-clé call que vous devez utiliser pour appeler une fonction. Il suffit donc d'utiliser

myfunc(divid); 

pour appeler votre fonction fera l'affaire.

Pour lier votre li -s à votre div -s vous pouvez utiliser un schéma de nommage id, par exemple, donner à tous vos li -s ids commençant par annonce et toutes vos div ids commençant par « info » que vous les avez , mais ont les bits après que ce soit le même.

<li id='d1'> </li> 
<li id='d2'> </li> 
<li id='d3'> </li> 

<div id='info1'></div> 
<div id='info2'></div> 
<div id='info3'></div> 

puis utilisez

$('.mycls li').hover(function() {  
    // get the number part of the li id and use it to 
    // build the divid by appending it to "info" 
    var divid = "info" + $(this).attr('id').slice(1); 
    myfunc(divid); 
}); 

function myfunc(divid) 
{ 
    $("#" + divid).show(); 
    //hide all divs that do not have id=divid 
    $("div:not(#" + divid + ")").hide(); 
} 
+0

, cela signifie 'id div'-de doit être comme '1,2,3 ...?' – nectar

+0

non, 'les ids div'-de doit être comme' info1, Info2 , info3' - J'ai mis à jour ma réponse pour rendre ceci plus clair –

+1

ya je l'ai eu ... mais cela ne fonctionne pas même quand je passe 'var div =" info1 "; myfunc (division); 'il n'appelle pas la fonction mais tous les' div'-s de la page disparaissent. – nectar

1

J'ai écrit ce ceci:

jQuery.fn.doSomeStuff = function(options, callback) { 
    var $elem = $(this[0]) 
    var args = options || {}; 

    // doSomeStuff 
    alert("DOM element: "+$elem.html()); 
    alert("this ia a parameter:"+ args.aParameter); 

    if (typeof callback == 'function') { // make sure the callback is a function 
     callback.call(this); // brings the scope to the callback 
    } 
    return $elem; //ensures jquery chainability 
}; 
  1. définir votre propre fonction
  2. spécifier des paramètres et de rappel
  3. assurer jquery chainability

Vous pouvez essayer here

Questions connexes