2011-11-04 25 views
4

我目前有四个change()事件激发完全相同的代码(见下文),所以我想知道是否有办法将这些事件分组在一行中以保存重复代码四次?组JS事件

谢谢。

/** Check for a change to any of the search dropdowns */ 
$('#job-roles').change(function(e){ 
    letter = $_GET('staff_search'); 
    initiate_staff_search(letter, '<?php echo $staff_search_nonce; ?>', '<?php echo $name_search_type; ?>') 
}); 
$('#ind-services').change(function(e){ 
    letter = $_GET('staff_search'); 
    initiate_staff_search(letter, '<?php echo $staff_search_nonce; ?>', '<?php echo $name_search_type; ?>') 
}); 
$('#bus-services').change(function(e){ 
    letter = $_GET('staff_search'); 
    initiate_staff_search(letter, '<?php echo $staff_search_nonce; ?>', '<?php echo $name_search_type; ?>') 
}); 
$('#indi-services').change(function(e){ 
    letter = $_GET('staff_search'); 
    initiate_staff_search(letter, '<?php echo $staff_search_nonce; ?>', '<?php echo $name_search_type; ?>') 
}); 
+3

'letter = $ _GET('staff_search');'??? – Matt

+0

+1 @Matt哈哈哈我没有发现! – ManseUK

+0

@Matt - 那个代码有什么问题? –

回答

5
$('#job-roles, #indi-services, #ind-services, #bus-services').change(function(e){ 
    letter = $_GET('staff_search'); 
    initiate_staff_search(letter, '<?php echo $staff_search_nonce; ?>', '<?php echo $name_search_type; ?>') 
}); 
+0

完美 - 我曾尝试将它们全部单独包装在引号中,但不是按照您的建议。谢谢。 –

5

选项1:给他们所有相同的类和事件附加到所有这些$('.someClass').change(...)

选项2的基:事件:$('#job-roles, #ind-services, ... ').change(...)

+0

这两个工作,我已经选择了两个。感谢您的回复。 –

4

使用上课?

给所有元素类的说doSomething然后用下面的代码来实现监听器:

$('.doSomething').change(function(e){ 
    letter = $_GET('staff_search'); 
    initiate_staff_search(letter, '<?php echo $staff_search_nonce; ?>', '<?php echo $name_search_type; ?>') 
}); 
+0

会工作,但要避免过多地使用此代码烦躁。尽管感谢您的快速回复。 –

1

另一种选择,除了已经介绍的优秀的人,无非是:

(function(){ 
    function doCoolStuff(){ 
    letter = $_GET('staff_search'); 
    initiate_staff_search(letter, '<?php echo $staff_search_nonce; ?>', '<?php echo $name_search_type; ?>') 
    } 

    $('#job-roles').change(function(e){ 
    doCoolStuff(); 
    }); 
    $('#ind-services').change(function(e){ 
    doCoolStuff(); 
    }); 
    $('#bus-services').change(function(e){ 
    doCoolStuff(); 
    }); 
    $('#indi-services').change(function(e){ 
    doCoolStuff(); 
    }); 
}()); 
+0

还是很重复的,重复的,重复的,你为什么要这样做? – Neal

+2

仍然相当重复,重复性,重复性,你为什么要这样做? – ManseUK

+0

我确实考虑过这条路线,但是我的高级搜索最终会有8-10个下拉列表供选择,所以它会有点冗长。感谢您花时间回复。 –