2012-02-10 6 views
1

J'ai une liste d'éléments sur lesquels j'aimerais effectuer la même action. Ils ont tous des identifiants séparés, donc je veux pouvoir passer le nom de chacun d'entre eux à Jquery pour que l'action ne soit effectuée que sur cet identifiant. Par exemple:Passage d'une variable à une fonction Jquery

<a href="#" id="1">one</a> 
<a href="#" id="2">two</a> 
<div id="#test1"></div> 
<div id="#test2"></div> 

Je veux être en mesure de faire quelque chose comme ceci:

function doSomething(x) { 
    var div=x+'div'; 
    $(x).click(function() { $.(div).slideDown(); }); 
} 

Toute pensée?

Merci.

+1

'id = "# foo"' est illégale. Vous ne pouvez pas avoir '#' dans le 'id'. – Blender

Répondre

2
<a href="#" class="x" d="test1">one</a> 
<a href="#" class="x" d="test2">two</a> 
<div id="test1" class="x"></div> 
<div id="test2" class="x"></div> 
function doSomething(x) 
{ 
    $("a.x").click(function() 
    { $("div#" + $(this).attr("d")).slideDown(); } 
    ); 
} 
3

Utilisez l'attribut onclick, qui simplifie un peu le code:

<a href="#" id="1" onclick="handleClick(this)">one</a> 
<a href="#" id="2" onclick="handleClick(this)">two</a> 
<div id="#test1"></div> 
<div id="#test2"></div> 

function handleClick(x) { 
    $('#test'+ x.id).slideDown(); 
} 
2

Vous pouvez passer élément jQuery/s directement dans la fonction comme ceci:

var doSomething = function(el){ 
    el.click(function(){ }); 
}; 

// Single element 
var $el = $('a.class'); 
doSomething($el); 

// Multiple elements 
var $elms = $('a.class, a#id'); 
doSomething($elms); 
0

Vous pouvez utiliser data attributs comme celui-ci pour stocker les données avec les éléments html et les récupérer en utilisant la méthode jQuery data(). Essaye ça.

Html changement

<a href="#" data-id="1">one</a> 
<a href="#" data-id="2">two</a> 
<div id="test1"></div> 
<div id="test2"></div> 

Utilisez cette js

$('a').click(function(){ 
    $('#test' + $(this).data('id')).slideDown(); 
}); 

Pour récupérer les données en utilisant la méthode valeur de l'attribut jQuery data juste passer la seconde moitié de l'attribut. Donc, dans ce cas, en passant id à data nous donnera la valeur d'id.

+0

Merci à tous - fonctionne bien maintenant! – user988129

+2

Kool, n'hésitez pas à le marquer comme réponse. – ShankarSangoli

3

Voici comment passer variable jquery fn

<title>Test</title> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("#but").click(function() { 
       var n = $(this).attr("n"); 
       alert(n); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <a id="but" href="#" n="I Love You">Click Here</a> 
</body> 

Questions connexes