2012-04-02 102 views
0

我有一个jQuery应用程序,有不同的选项卡中有几个网格(jqgrid)。 下面ECH格我有一个按钮:如何将这些jquery函数干成一个通用函数?

<div id="content1" class="content"> 
    <table id="grid1" class="myGridClass"></table> 
    <input id="ColChooser1"type = "button" value="Choose Columns" class="grid1"></input> 
</div> 

<div id="content2" class = "content">  
    <table id="grid2" class="myGridClass"></table> 
    <input id="ColChooser2"type = "button" value = "Choose Columns" class="grid2"></input> 
</div> 

Ive得到了不同的功能为每个列选择按钮:例如

$('#ColChooser1').click(function(){ 
    $('grid1').jqGrid('columnChooser'); 
}; 

最新最好的方式来写一个函数所有的按钮?

到目前为止,这是什么Ive得到

$('div.content :input[value="Choose Columns"]').click(function{ 
    $('div.content table.'+this.attr('class')).jqGrid('columnChooser'); 
}); 

不知道this.attr('class')永远是尽管每个按钮具有相同类的,因为jQuery UI的其表元素同样也可以添加其它类 -

编辑 下面是什么工作 - 接近下方的第一个答案,但调整了位 -

  $('div.DataContent :input[value="Choose Columns"]').click(function() { 
       $(this).parent().find('.myGridClass').jqGrid('columnChooser'); 
      }); 

使用.find替代.children来遍历比第一层更深的层次(jqgrid嵌套原始表格元素更深) 也使用了更具体的选择器'.myGridClass'而不是'table',因为jqGrid添加了几个其他表格元素,的'表'不返回原来的预期

回答

1

看看jQuery文档中的traversing页面。您应该能够使用这些功能的组合(例如,父母,父母,孩子)来选择您想要的元素。

e.g:

$('div.content :input[value="Choose Columns"]').click(function{ 
    $(this).parent().children('table').jqGrid('columnChooser'); 
}); 
1

你可以用按钮点击事件开始

+0

看起来像这个shd工作,但jgGrid插件添加了一堆嵌套原始表元素深层的新元素。 prev只能立即返回前面的兄弟姐妹 – 2012-04-11 05:14:54

+0

是否在原始表格和按钮之间插入

?否则应该使用$(this).prev('table.myGridClass') – 2012-04-12 17:26:50

0

附加一个单击处理程序到父,用于输入,然后找到兄弟表。

$(parent_container_of_divs).on('click', '.content > input',function(){ 
    $(this).sibling('table').jqGrid('columnChooser'); 
}); 

,只要这些元件比你所提供的内容更多,让我们更具体。向ColChooser输入添加一个点击处理程序,并找到它的兄弟grid表。

$(parent_container_of_divs).on('click', 'input[id^="ColChooser"]',function(){ 
    $(this).sibling('table[id^="grid"]').jqGrid('columnChooser'); 
}); 
0
 $('div.DataContent :input[value="Choose Columns"]').click(function() { 
      $(this).parent().find('.myGridClass').jqGrid('columnChooser'); 
     }); 

使用.find代替提交遍历比第一电平(的jqGrid嵌套原来的表元素深)也采用了更具体的选择” .myGridClass',而不是在更深的答案之一。儿童'表',因为jqGrid添加了几个其他表元素,使用'表'不返回原来的意图

相关问题