2013-01-12 270 views
0
filterJobs: function() 
{ 
    var team = $('#selectOne').val(); 
    var specialty = $('#selectTwo').val(); 
    var level = $('#selectThree').val(); 
    //var defSelectTeam= 

    $('.jobs').hide() 
      .filter('[data-team="' + team + '"][data-specialization="' + specialty + '"][data-level="' + level + '"]') 
      .show(); 
    var newNumJobs = $('.jobs:visible').length; 
    $('table:visible:odd').css({'background-color': ' #F1F1F1'}); 
    $('table:visible:even').css({'background-color': '#FFFFFF'}); 
    if (newNumJobs <= this.pageSize) 
    { 
     $("#dvJobs span").text("Showing " + newNumJobs + " of " + newNumJobs + " jobs"); 
    } 
    else 
    { 
     $("#dvJobs span").text("Showing " + this.pageSize + " of " + newNumJobs + " jobs"); 
    } 

    this.buildPaginator(newNumJobs); 
}, 

嗨任何线索如何,现在修改为选择滤波这种过滤功能它的作品,我需要设置一个默认值,显示对变化的滤波前所有选项?我只需要指出正确的大方向,我对js很吝啬,但是试图改进。在此先感谢, 的HTML是这个//////,它的工作原理是取数据属性关闭表,这部分工作正常,只需要设置一个默认值,我想设置几个数据ATTRS的,但似乎很混乱。或者设置一个检查值的if块,如果它的'select one'显示全部。对不起,漫不经心。设置默认值

<select id="selectOne"> 
    <option value="Select One">Select One </option> 
    <option value="Engineering">Engineering </option> 
    <option value="SoftwareDevelopment" >Software Development</option> 
    <option value="HumanResources" >Human Resources</option> 
    <option value="MarkettingAndSales">Marketting and Sales</option> 
    <option value="Administrative">Administrative</option> 
    <option value="Others">Others</option> 
</select> 
<label>Specialty:</label> 
<select id="selectTwo"> 
    <option class="Select One" >Select One </option> 
    <option class="MarkettingAndSales" value="Sales">Sales </option> 
    <option class="HumanResources" value="Recruitment">Recruitment </option> 
    <option class="Administrative" value="OfficeGeneral">Office General </option> 
    <option class="Engineering SoftwareDevelopment" value="WebDevelopment">Web Development </option> 
    <option class="SoftwareDevelopment" value="ApplicationDevelopment">Application Development </option> 
    <option class="SoftwareDevelopment" value="UIUXDesign">UI/UX Design</option> 
    <option class="Others" value="ScientificResearch">Scientific Research</option> 
    <option class="Engineering Others" value="ComputerHardwareNetworking">Computer Hardware Networking</option> 
    <option class="Others" value="Others">Others</option> 
</select> 
<label>Level:</label> 
<select id="selectThree"> 
    <option>Senior</option> 
    <option>Intermediate</option> 
    <option>Junior</option> 
</select> 

在此先感谢。 更新:我修改了一点,以显示分页,但我想我现在用的是VAL函数出错了的if/else块?

filterJobs: function() 
{ 
    var team = $('#selectOne').val(); 
    var specialty = $('#selectTwo').val(); 
    var level = $('#selectThree').val(); 
    var newNumJobs = $('.jobs:visible').length; 
    if (team === 'SelectOne' && specialty === 'SelectOne') 
    { 
     $('.jobs').show(); 
    } 
    else 
    { 
     $('.jobs').hide() 
       .filter('[data-team="' + team + '"][data-specialization="' + specialty + '"][data-level="' + level + '"]') 
       .show(); 

     $('table:visible:odd').css({'background-color': ' #F1F1F1'}); 
     $('table:visible:even').css({'background-color': '#FFFFFF'}); 
    } 
    if (newNumJobs <= this.pageSize) 
    { 
     $("#dvJobs span").text("Showing " + newNumJobs + " of " + newNumJobs + " jobs"); 
    } 
    else 
    { 
     $("#dvJobs span").text("Showing " + this.pageSize + " of " + newNumJobs + " jobs"); 
    } 


    this.buildPaginator(newNumJobs); 
} 

为了澄清,我添加了tabe被过滤,希望能帮助理解我的问题。

<table data-team="<?php print $name['team']; ?>" data-specialization="<?php print $name['speciality']; ?>" data-level="<?php print $name['level']; ?>" cellpadding="0" cellspacing="0" border="0" width="670px" class="jobs"><tr><td> 
    <tr><td colspan="4"><strong>Research Assistant</strong></td> 
     <td></td><td></td><td></td></tr> 
    <tr> 
     <td width="100">Location : </td> 
     <td colspan="3">Madrid</td> 
     <td></td> 
     <td></td> 
     <td></td> 
    </tr> 
    <tr> 
     <td> Job Code : </td> 
     <td width="460">6767676</td> 
     <td></td> 
     <td></td> 
    </tr> 
</table> 
+0

'数据'属性似乎是一样好方法,因为任何其他的。不清楚默认问题是什么 – charlietfl

+0

默认问题是,在调用过滤器时,所以没有选项显示,我希望在我开始调用过滤器函数之前加载所有内容。 – Ego

+0

只激活选择的'change'处理程序中的过滤器。可疑你需要运行它时,页面加载,除非你具备的条件,其中的页面加载预设选项中选择 – charlietfl

回答

1

我不是正面的我理解你的问题,但如果你只是想为下拉菜单选择默认值,那么不需要jQuery。只需将selected='selected'添加到您想要在html中设置为默认选项。像这样:

<select id="selectOne"> 
    <option value="Select One">Select One </option> 
    <option value="Engineering" selected="selected">Engineering </option> 
    ...etc... 

在这种情况下,您也可以摆脱“选择一个”选项并将其作为标签或其他东西。

编辑:

您还可以将选定的过滤器动态地使用jQuery,如果你需要:

$('#optionId').attr('selected', 'selected'); 

编辑2:

好了,读了原来的问题的其他意见。我认为我看到了更好的问题。我同意在更改处理程序中进行筛选将是最好的。喜欢的东西:

$('#selectOne, #selectTwo, #selectThree').change(filterJobs); 

此外,如果您需要执行的页面加载此过滤,设置“选择”按上面和jQuery的调用

$('#selectWhichever').trigger('change'); 

将触发更改处理,而无需实际上选择一个值。

+0

好的:-)谢谢!结合你的消化和我的代码更改,给我完全我想要的!非常感谢:-) – Ego

+0

好吧,有一些奇怪的怪癖,像这样.....例如过滤功能现在失败了。 – Ego

+0

你能更具体地了解你想做什么吗?我很难在你的代码中找出它,因为有些东西似乎被排除在外(例如,我没有看到任何类型的“作业”)。编辑:哦,我找到了。 – tandrewnichols