2010-03-11 79 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();