Javascript 基于文本选中上一个复选框

Javascript 基于文本选中上一个复选框,javascript,jquery,html,checkbox,local-storage,Javascript,Jquery,Html,Checkbox,Local Storage,我在对话框中有一组复选框。单击按钮后,将显示此对话框。这些复选框后面是带有一些文本的锚定标记。这些复选框与一些有序和无序列表一致 在这种情况下,复选框被选中的方式有两种 如果单击了父项,则也会选中相应的子复选框 用户还可以选择单个子级 在这里,作为父母的复选框有自己的标识符。但是孩子们没有标识符。如果它也有,则层次结构中的所有子级都有一个标识符 我需要基本上存储在localStorage中选中的复选框,以便在重新加载页面时,我可以检索以前选中的复选框的状态 上面的第一种情况发生了,并且工作正常,

我在对话框中有一组复选框。单击按钮后,将显示此对话框。这些复选框后面是带有一些文本的锚定标记。这些复选框与一些有序和无序列表一致

在这种情况下,复选框被选中的方式有两种

  • 如果单击了父项,则也会选中相应的子复选框
  • 用户还可以选择单个子级 在这里,作为父母的复选框有自己的标识符。但是孩子们没有标识符。如果它也有,则层次结构中的所有子级都有一个标识符

    我需要基本上存储在localStorage中选中的复选框,以便在重新加载页面时,我可以检索以前选中的复选框的状态

    上面的第一种情况发生了,并且工作正常,但是在第二种情况下,我无法检索单个复选框的先前状态。我尝试在复选框后面发送文本,复选框被检入本地存储,然后在页面加载时将每个文本与存储的值进行比较。如果匹配,则检查文本上一个元素的属性。这就是我应用的逻辑。但它不能正常工作

    这是我的密码

    function display(){
    //some code to display dialog box where the checkboxes along with anchor tags come into picture 
    
        var vals[];
        $("input[type=checkbox").each(function(){
            vals.push($(this).next("a").text());
        });
    //some code which brings in localStorage and the existing data in the dialog 
    
    代码将进一步执行,最终接收所有参数并检查以下条件

    if ( z[x]==hname[k]){
        alert("Matched");
        $('a[text="'+hname[k]+'"}').prev().attr("checked",true);
    }
    
    这里z[x]是我以前存储在localStorage中的值,hname[k]是对话框中的所有值

    现在我的问题就在这一行

    $('a[text="'+hname[k]+'"]').prev().attr("checked",true);
    
    我试图检查文本前面的元素。但它不起作用

    我的html代码::

    <ul class="test_ex">
        <li>
            <input type="checkbox" id="chckBox" class="parent" /> <a class="ref">Fruits</a>
    
            <ul class="example">
                <li>
                    <input type="checkbox" id="chckBox" class="child" /> <a class="ref"> Apple </a>
    
                </li>
                <li>
                    <input type="checkbox" id="chckBox" class="child" /> <a class="ref"> Orange </a>
    
                </li>
            </ul>
            <ul class="test_ex_sample">
                <li>
                    <input type="checkbox" id="chckBox" class="parent" /> <a class="ref">Birds</a>
    
                    <ul class="example">
                        <li>
                            <input type="checkbox" id="chckBox" class="child" /> <a class="ref"> Peacock </a>
    
                        </li>
                        <li>
                            <input type="checkbox" id="chckBox" class="child" /> <a class="ref">Parrot </a>
    
                        </li>
                    </ul>
                    <ul class="example">
                        <li>
                            <input type="checkbox" id="chckBox" class="parent" /> <a class="ref"> Food </a>
    
                            <ul class="example">
                                <li>
                                    <input type="checkbox" id="chckBox" class="child" /> <a class="ref">Bread </a>
    
                                </li>
                            </ul>
                        </li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
    <input type="button" id="testB" value="OK" />
    
    • 水果
      • 苹果
      • 橙色
        • 雄孔雀
        • 鹦鹉
        • 食物
          • 面包

    我宁愿使用
    过滤器
    功能:

    $("a").filter(function (i, e) {
        return 'Birds' === e.innerText.trim();
    }).prev().attr("checked", true);
    

    成功选中包含“Birds”的锚点附近的复选框。

    我宁愿使用
    过滤器
    功能:

    $("a").filter(function (i, e) {
        return 'Birds' === e.innerText.trim();
    }).prev().attr("checked", true);
    

    成功选中包含“Birds”的锚点附近的复选框。

    我宁愿使用
    过滤器
    功能:

    $("a").filter(function (i, e) {
        return 'Birds' === e.innerText.trim();
    }).prev().attr("checked", true);
    

    成功选中包含“Birds”的锚点附近的复选框。

    我宁愿使用
    过滤器
    功能:

    $("a").filter(function (i, e) {
        return 'Birds' === e.innerText.trim();
    }).prev().attr("checked", true);
    

    成功选中包含“Birds”的锚附近的复选框。

    这是可能的解决方案之一:

    HTML

    <ul class="test_ex">
        <li>
            <input type="checkbox" class="parent" /> 
            <a class="ref">Fruits</a>
            <ul class="example">
                <li>
                    <input type="checkbox" class="child" />
                    <a class="ref"> Apple </a>
                </li>
                <li>
                    <input type="checkbox" class="child" />
                    <a class="ref"> Orange </a>
                </li>
            </ul>
            <ul class="test_ex_sample">
                <li>
                    <input type="checkbox" class="parent" /> <a class="ref">Birds</a>
    
                    <ul class="example">
                        <li>
                            <input type="checkbox" class="child" /> <a class="ref"> Peacock </a>
    
                        </li>
                        <li>
                            <input type="checkbox" class="child" /> <a class="ref">Parrot </a>
    
                        </li>
                    </ul>
                    <ul class="example">
                        <li>
                            <input type="checkbox" class="parent" /> <a class="ref"> Food </a>
    
                            <ul class="example">
                                <li>
                                    <input type="checkbox" class="child" /> <a class="ref">Bread </a>
    
                                </li>
                            </ul>
                        </li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
    <input type="button" id="testB" value="OK" />
    
    $("input:checkbox").click(function(){
        $(this).siblings("ul")
                .find("input[type=checkbox]")
                .prop("checked",this.checked);
    });
    
    $("#testB").click(function(){
        var checkedValues = 
            $('input:checkbox:checked').map(function() {
                return $(this).next().text(); //or html() instead of text()
            }).get();
        alert(checkedValues);
    });
    
    检查此链接以查看工作示例


    希望有用

    这是可能的解决方案之一:

    HTML

    <ul class="test_ex">
        <li>
            <input type="checkbox" class="parent" /> 
            <a class="ref">Fruits</a>
            <ul class="example">
                <li>
                    <input type="checkbox" class="child" />
                    <a class="ref"> Apple </a>
                </li>
                <li>
                    <input type="checkbox" class="child" />
                    <a class="ref"> Orange </a>
                </li>
            </ul>
            <ul class="test_ex_sample">
                <li>
                    <input type="checkbox" class="parent" /> <a class="ref">Birds</a>
    
                    <ul class="example">
                        <li>
                            <input type="checkbox" class="child" /> <a class="ref"> Peacock </a>
    
                        </li>
                        <li>
                            <input type="checkbox" class="child" /> <a class="ref">Parrot </a>
    
                        </li>
                    </ul>
                    <ul class="example">
                        <li>
                            <input type="checkbox" class="parent" /> <a class="ref"> Food </a>
    
                            <ul class="example">
                                <li>
                                    <input type="checkbox" class="child" /> <a class="ref">Bread </a>
    
                                </li>
                            </ul>
                        </li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
    <input type="button" id="testB" value="OK" />
    
    $("input:checkbox").click(function(){
        $(this).siblings("ul")
                .find("input[type=checkbox]")
                .prop("checked",this.checked);
    });
    
    $("#testB").click(function(){
        var checkedValues = 
            $('input:checkbox:checked').map(function() {
                return $(this).next().text(); //or html() instead of text()
            }).get();
        alert(checkedValues);
    });
    
    检查此链接以查看工作示例


    希望有用

    这是可能的解决方案之一:

    HTML

    <ul class="test_ex">
        <li>
            <input type="checkbox" class="parent" /> 
            <a class="ref">Fruits</a>
            <ul class="example">
                <li>
                    <input type="checkbox" class="child" />
                    <a class="ref"> Apple </a>
                </li>
                <li>
                    <input type="checkbox" class="child" />
                    <a class="ref"> Orange </a>
                </li>
            </ul>
            <ul class="test_ex_sample">
                <li>
                    <input type="checkbox" class="parent" /> <a class="ref">Birds</a>
    
                    <ul class="example">
                        <li>
                            <input type="checkbox" class="child" /> <a class="ref"> Peacock </a>
    
                        </li>
                        <li>
                            <input type="checkbox" class="child" /> <a class="ref">Parrot </a>
    
                        </li>
                    </ul>
                    <ul class="example">
                        <li>
                            <input type="checkbox" class="parent" /> <a class="ref"> Food </a>
    
                            <ul class="example">
                                <li>
                                    <input type="checkbox" class="child" /> <a class="ref">Bread </a>
    
                                </li>
                            </ul>
                        </li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
    <input type="button" id="testB" value="OK" />
    
    $("input:checkbox").click(function(){
        $(this).siblings("ul")
                .find("input[type=checkbox]")
                .prop("checked",this.checked);
    });
    
    $("#testB").click(function(){
        var checkedValues = 
            $('input:checkbox:checked').map(function() {
                return $(this).next().text(); //or html() instead of text()
            }).get();
        alert(checkedValues);
    });
    
    检查此链接以查看工作示例


    希望有用

    这是可能的解决方案之一:

    HTML

    <ul class="test_ex">
        <li>
            <input type="checkbox" class="parent" /> 
            <a class="ref">Fruits</a>
            <ul class="example">
                <li>
                    <input type="checkbox" class="child" />
                    <a class="ref"> Apple </a>
                </li>
                <li>
                    <input type="checkbox" class="child" />
                    <a class="ref"> Orange </a>
                </li>
            </ul>
            <ul class="test_ex_sample">
                <li>
                    <input type="checkbox" class="parent" /> <a class="ref">Birds</a>
    
                    <ul class="example">
                        <li>
                            <input type="checkbox" class="child" /> <a class="ref"> Peacock </a>
    
                        </li>
                        <li>
                            <input type="checkbox" class="child" /> <a class="ref">Parrot </a>
    
                        </li>
                    </ul>
                    <ul class="example">
                        <li>
                            <input type="checkbox" class="parent" /> <a class="ref"> Food </a>
    
                            <ul class="example">
                                <li>
                                    <input type="checkbox" class="child" /> <a class="ref">Bread </a>
    
                                </li>
                            </ul>
                        </li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
    <input type="button" id="testB" value="OK" />
    
    $("input:checkbox").click(function(){
        $(this).siblings("ul")
                .find("input[type=checkbox]")
                .prop("checked",this.checked);
    });
    
    $("#testB").click(function(){
        var checkedValues = 
            $('input:checkbox:checked').map(function() {
                return $(this).next().text(); //or html() instead of text()
            }).get();
        alert(checkedValues);
    });
    
    检查此链接以查看工作示例


    希望有用

    如果您对HTML代码进行pos操作会更好。我添加了一个类似的HTML,我在上找到了:)
    text=“…”
    不是有效的HTML属性,并且它不存在于您提供的HTML中。我会将其更改为value。它仍然不起作用。如果您对HTML代码进行pos操作会更好。我添加了一个类似的HTML,我在上找到了:)
    text=“…”
    不是有效的HTML属性,并且它不存在于您提供的HTML中。我将它更改为value。它仍然不起作用。如果您对HTML代码进行pos操作会更好。我添加了一个类似的HTML,我在上找到了:)
    text=“…”
    不是有效的HTML属性,并且它不存在于您提供的HTML中。我将它更改为value。它仍然不起作用。如果您对HTML代码进行pos操作会更好。我添加了一个类似的HTML,我在上找到了:)
    text=“…”
    不是有效的HTML属性,并且它不存在于您提供的HTML中。我将它更改为value。但还是不行。