第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jQuery 循環(huán)遍歷表單并僅檢索可見輸入的字段標簽和值

jQuery 循環(huán)遍歷表單并僅檢索可見輸入的字段標簽和值

牛魔王的故事 2023-09-14 18:20:02
我有以下標記,其中有一個<div data-name="holder"></div>用于動態(tài)內容的持有人 div。<div id="main" class="agent">  <div class="page">  <div data-name="holder">    <div class="child">        <div class="area" >           <div class="box">              <div  class="section" >                 <div data-type="text" class="widget_type_text hidden" >                     <div>                         <label for="child0name">Full name</label>                     </div>                     <div>                        <div class="validationMessage">                           Enter Name                        </div>                         <input id="child0name" type="text" name="child[0][name]" required="" title="Enter full name">                     </div>                 </div>                 <div data-type="radio" class="widget_type_radio" >                     <div>                        <fieldset>                            <legend>Gender</legend>                            <span data-value="male"><input id="child0genderMale" type="radio" name="child[0][gender]" value="male"><label for="child0genderMale">Male</label></span>                            <span data-value="female"><input id="child0genderFemale" type="radio" name="child[0][gender]" value="female"><label for="child0genderFemale">Female</label></span>                        </fieldset>                     </div>                 </div>             </div>          </div>持有者可以有多個子div,其中有一個名為 child方便的類。每個子 div 可以包含多個帶有名為 的類的 div area。每個具有名為 的類的 divarea可以包含一個具有名為 的類的 divsection每個具有名為 的類的 divsection可以包含多個表單輸入小部件,這些小部件位于具有數(shù)據類型屬性的 div 內。area具有 class或屬性的 div 的可見性section可以data-type通過包含hidden類來切換。每個 div 的可見性也可以通過包含data-access值為代理或來賓的屬性來限制 - 這可以通過向 div 添加代理或來賓類來實現(xiàn)#main。因此,如果訪客用戶正在訪問該站點,帶有 #main 的 div 將guest注入類,如果它是代理,它將有一個agent類,然后使用以下 CSS 來切換每個 div 的可見性。
查看完整描述

2 回答

?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

如果類別(例如:代理、客人)是固定的并且您知道所有可能的組合是什么,您可以像這樣進行選擇


var $main = $('#main');

    

// filter all the class that are not in the main

var aClasses = ['agent', 'guest'].filter(function(cl) {

    return !$main.hasClass(cl)

});


// build the selector

var selector = ':not(.hidden)';

aClasses.forEach(function(cl) {

    selector += ':not([data-access="' + cl + '"])'

})


$('div.area' + selector).each(function(i, el) {

    $('div.section' + selector, el).each(function(_i, _el) {

        $('div[data-type]' + selector, _el).each(function(__i, __el) {

            // you are inside the visible 'div[data-type]' here; do your stuff

        });

    });

});

或者,像這樣一下子做:


$(

    'div.area' + selector 

    + ' div.section' + selector 

    + ' div[data-type]' + selector

).each( function(i, el) {

    // your stuff

}

或者,如果您確實不想根據具有類(例如:代理、訪客)的主 div 進行選擇并檢查完全相同的內容,您可以嘗試


var $main = $('#main');

    

// get the main div's class

var sClass = (['agent', 'guest'].filter(function(cl) {

    return $main.hasClass(cl)

})[0];


// make the two selector combination

var s1 = ':not(.hidden):not([data-access])';

    s2 = '[data-access="' + sClass + '"]:not(.hidden)';

    

$('div.area' + s1 + ',div.area' + s2).each(function(i, el) {

    $('div.section' + s1 + ',div.section' + s2, el).each(function(_i, _el) {

        $('div[data-type]' + s1 + ',div[data-type]' + s2, el).each(function(__i, __el) {

            // your stuff

        });

    });

});

但在這里,要一次性寫出所有內容,您必須使用 8 種不同的組合


例如:


// area-s1 sect-s1 div-s1, 

// area-s1 sect-s1 div-s2, 

// area-s1 sect-s2 div-s1,

// area-s1 sect-s2 div-s2,

// area-s2 sect-s1 div-s1,

// area-s2 sect-s1 div-s2, 

// area-s2 sect-s2 div-s1,

// area-s2 sect-s2 div-s2,


// ie:


$(

    'div.area' + s1 + ' div.section' + s1 + ' div[data-type]' + s1

    + ',div.area' + s1 + ' div.section' + s1 + ' div[data-type]' + s2

    + ',div.area' + s1 + ' div.section' + s2 + ' div[data-type]' + s1

    + ',div.area' + s1 + ' div.section' + s2 + ' div[data-type]' + s2

    + ',div.area' + s2 + ' div.section' + s1 + ' div[data-type]' + s1

    + ',div.area' + s2 + ' div.section' + s1 + ' div[data-type]' + s2

    + ',div.area' + s2 + ' div.section' + s2 + ' div[data-type]' + s1

    + ',div.area' + s2 + ' div.section' + s2 + ' div[data-type]' + s2

).each(function(i, el) {

    // your stuff

})

所以最好使用嵌套循環(huán)本身。


例子


// assume the classes are (agent, guest) and main div is having class 'agent' then


/* First approch */

$('div.area:not(.hidden):not([data-access="guest"] div.section:not(.hidden):not([data-access="guest"] div[data-type]:not(.hidden):not([data-access="guest"]').each(function(index, elem) {

    //your stuff

})


// using nested loops

$('div.area:not(.hidden):not([data-access="guest"]').each(function(i, el) {

    $('div.section:not(.hidden):not([data-access="guest"'], el).each(function(_i, _el) {

        $('div[data-type]:not(.hidden):not([data-access="guest"'], _el).each(function(__i, __el) {

            // you are inside the visible 'div[data-type]' here; do your stuff

        });

    });

});



/* Second approch */

$(

    'div.area:not(.hidden):not([data-access]) div.section:not(.hidden):not([data-access]) div[data-type]:not(.hidden):not([data-access]), '

    + 'div.area:not(.hidden):not([data-access]) div.section:not(.hidden):not([data-access]) div[data-type][data-access="agent"]:not(.hidden), '

    + ...

).each(function(i, el) {

    //your stuff

})


// using nested loops

$('div.area:not(.hidden):not([data-access]), div.area[data-access="agent"]:not(.hidden)').each(function(i, el) {

    $('div.section:not(.hidden):not([data-access]), div.section[data-access="agent"]:not(.hidden)', el).each(function(_i, _el) {

        $('div[data-type]:not(.hidden):not([data-access]), div[data-type][data-access="agent"]:not(.hidden)', _el).each(function(__i, __el) {

            // your stuff

        });

    });

});


查看完整回答
反對 回復 2023-09-14
?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

jQuery 的:visible偽類將僅過濾[data-type]用戶可見的元素。


因此,根據您的描述,在選擇器上使用它應該足夠了:


<script>

$(function () {

    function fetchFormData() {

        var result = [];


        $('[data-name=holder] [data-type]:visible').each(function (idx, elem) {

            var $elem = $(elem);

            var type = $elem.data('type');

            var label, value;


            // specific case: radio input

            if (type === 'radio') {

                label = $elem.find('legend').text();

                value = $elem.find('input[type=radio]:checked').val();


                result.push({label: label, value: value});


                // done with this item, skip to next one

                return true; // continue;

            }


            // generic case, works with most inputs

            label = $elem.find('label').text();

            value = $elem.find('input').val();


            result.push({label: label, value: value});

        });


        return result;

    }



    // add this to an event handler

    console.log(fetchFormData());

});

</script>


查看完整回答
反對 回復 2023-09-14
  • 2 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號