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はこれです//////,それはテーブルからデータ属性を取り除くことによって機能します.その部分は正常に機能します.デフォルト値を設定する必要があるだけです.いくつかのデータ属性を設定することを考えていました.しかし、それは面倒です。または、値をチェックするifブロックを設定して、その「1つを選択」がすべてを表示する場合。とりとめもなくすみません。

<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>

前もって感謝します。更新: ページネーションを表示するために少し変更しましたが、if/else ブロックで間違った val 関数を使用していると思いますか?

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);
}

明確にするために、フィルタリングされているタブを追加しました。これが私の質問を理解するのに役立つことを願っています。

<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>
4

1 に答える 1

1

私はあなたの質問を理解していますが、ドロップダウンのデフォルトの選択だけが必要な場合は、jQuery は必要ありません。selected='selected'html でデフォルトとして設定するオプションに追加するだけです。このような:

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

この場合も、「1 つ選択」オプションを削除して、代わりにラベルなどにすることができます。

編集:

次のことが必要な場合は、jQuery を使用して、選択したフィルターを動的に適用することもできます。

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

編集2:

わかりました、元の質問に関する他のコメントを読んでください。問題が何であったかがよくわかると思います。変更ハンドラでフィルタリングを行うのが最善であることに同意します。何かのようなもの:

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

さらに、ページの読み込み時にこのフィルタリングを実行する必要がある場合は、上記のように jQuery 呼び出しで「選択済み」を設定します

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

これにより、実際に値を選択する必要なく、変更ハンドラーがトリガーされます。

于 2013-01-12T15:43:20.130 に答える