Jquery使用单选按钮过滤内容(显示/隐藏)

时间:2013-05-29 07:04:18

标签: jquery

嘿我正在寻找一个非常简单的jQuery代码,当选择某个单选按钮时显示div,如果根据单选按钮值“取消选择”该单选按钮,则隐藏该div。

我想出了如何使用单个过滤器的单选按钮,但我想为两个过滤器工作说

  1. 基于类型所属的
  2. 基于........ 数量
  3. 以下是适用于第一个过滤器(类型)的代码:

    <script>
        var $filters = $("input:radio[name='type']"); 
    
    
    var $categoryContent = $('#mainhide .mainresultbox');
    var $errorMessage = $('#errorMessage');
    $filters.click(function() {
        // if any of the radio buttons for brand are checked, you want to show div's containing their value, and you want to hide all the rest.
        $categoryContent.hide();
         var $selectedFilters = $filters.filter(':checked');
        if ($selectedFilters.length > 0) {
            $errorMessage.hide();
            $selectedFilters.each(function (i, el) {
                $categoryContent.filter(':contains(' + el.value + ')').show();
            });
        } else {
            $errorMessage.show();
        }
    
    });
    </script>
    

    以下是单选按钮的HTML。

    <ul>
        <li><label for="cdg"><input type="radio" id="cdg" name="type" value="brand1"> brand1</label></li>
        <li><label for="cdh"><input type="radio" id="cdh" name="type" value="brand2"> brand1</label></li>
        <li><label for="cdi"><input type="radio" id="cdi" name="type" value="brand3"> brand1</label></li>
    </ul>
    
    <ul>
        <li><label for="cdj"><input type="radio" id="cdj" name="quantity" value="10">10</label></li>
        <li><label for="cdk"><input type="radio" id="cdk" name="quantity" value="20">20</label></li>
        <li><label for="cdl"><input type="radio" id="cdl" name="quantity" value="30">30</label></li>
    </ul>
    

    以下是div及其内容

    <div id="#mainhide">
      <div>brand1 in stock - 10</div>
      <div>brand1 in stock - 20</div>
      <div>brand1 in stock - 30</div>
    </div>
    <div id="errorMessage">reset all fliters</div>
    

    如何让两个滤镜都能正常工作,任何人都可以帮助我......

    谢谢你, Naresh Kamireddy

3 个答案:

答案 0 :(得分:1)

你不能在id中使用特殊字符,id应该遵循有效规则。 您使用了<div id="#mainhide">.这是无效的ID名称

使用:<div id="mainhide">

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

更多信息:

What are valid values for the id attribute in HTML?

答案 1 :(得分:0)

我不确定你到底想要什么,但你可以看看这个:

也是<div id="mainhide">而非<div id="#mainhide">

http://jsfiddle.net/yyCSQ/3/

答案 2 :(得分:0)

您可以像使用属性选择器一样重新过滤:

var $selectedFilters = $filters.filter(':checked').filter('[value="10"]';

我还会使用$(document).ready(function(){[your code here]});而不是在页面仍在加载时疯狂加载JS。 我还建议不要按照其他人的建议在您的ID中使用#

JQuery documentation