2010-03-11 60 views
1

我有以下功能我希望能够做的哪些工作得非常好内$(document).ready(function(){发送参数到jQuery函数

$('.threadWrapper > .littleme').click(function() { 
     $(this).next().toggle(); 
     $(this).toggle(); 
     $('.littleme').not(this).next().hide(); 
     $('.littleme').not(this).show(); 

     // re-run masonry 
     $('#mainContent').masonry(); 

     return false; 
    }).next().hide(); 

是内嵌调用该JavaScript包含threadWrapper类中的每个div元素也有自己的ID。我想要做的就是能够使用内联JavaScript调用并发送一个id作为参数来触发此函数。例如:

$(function(id){ 
$('#id > .littleme').next().toggle(); 
$('#id > .littleme').toggle(); 
etc. etc. 
}); 

回答

2

只需在连接字符串像这样的选择:

function toggleStuff(id) { 
    $('#' + id + ' > .littleme').next().toggle(); 
    $('#' + id + ' > .littleme').toggle(); 
    //etc. etc. 
} 

您的document.ready函数外定义这个所以它的使用。此外,您还可以缩短这个,如果你想和向下:

$('#' + id + ' > .littleme').toggle().next().toggle(); 
1

你可以使用常规的JavaScript函数:

function Something(id) // id is a jquery object 
{ 
    id.find('.littleme').next().toggle(); 
    id.find('.littleme').toggle(); 
    etc. etc. 
} 
0

没有必要从您的元素调用任何内嵌的JavaScript。我会建议如下:

$('.threadWrapper').click(function() { 
    $(this).find(".littleme").next().toggle(); 
    $(this).find(".littleme").toggle(); 
    etc. etc. 
}); 

看你的选择,.littleme.threadWrapper的直系后裔。因此,如果您将点击事件绑定到所有.threadWrapper,您可以通过在当前上下文中搜索来选择.littleme

另外,如果你有兴趣,那两个语句可以使用.end巩固:

$(this).find(".littleme").next().toggle().end().toggle();