Jquery - 将绑定函数包装到THIS元素

时间:2014-06-13 13:53:01

标签: javascript jquery html

我在页面上有多个表(将有超过100个),我想为所有这些表使用一个函数。当用户选择" Custom"在下拉菜单中,其他问题适用于所有人。如何将我的函数包装在THIS语句中以使其仅添加到该单独的表中。我提前为我对这个问题的描述道歉。

$(document).ready(function(){
  $('td.additional_content').css('visibility', 'hidden');
  $('#srds_mapping').bind('change', function (e) { 
        if( $('#srds_mapping').val() == 'Custom') {
            $('td.additional_content').css('visibility', 'visible');
            $('td.additional_content .custom').show();
        } else {
            $('td.additional_content').css('visibility', 'hidden');
            $('td.additional_content .custom').hide();
        }

  }).trigger('change');
});

通过查看它可以更好地解释

http://jsfiddle.net/2Q7J7/2/

2 个答案:

答案 0 :(得分:1)

this是事件处理程序中的目标元素:

$('#srds_mapping').bind('change', function (e) {
    if( $(this).val() == 'Custom') { // traverse to find the target input element

请注意,您不应在页面上使用多个ID。使用类或其他选择器来代替of.ex:

$('select').bind('change', function (e) {
    if( $(this).val() == 'Custom') {

答案 1 :(得分:0)

jQuery .each()函数将是一个不错的选择:

假设$('#srds_mapping')是你的桌子。首先,您可以在表中添加一个类,而不是id。例如<table id="srds_mapping" class="srds_mapping"></table>。在那之后,你可以做这样的事情。

$('.srds_mapping').each(function(){
   $(this).bind('change', function (e) {
     // other function stuff
   }).trigger('change');
});

此外,this thread可能值得一读,或者值得思考。