Элемент жолдың бар-жоғын тексеру және жолдан басқа ештеңе жоқ - мүмкін regex

Менде CMS үлгісі бар модуль бар, ол түршігерлік белгілеуді тудырады, бұл стильді мүлдем мүмкін емес етеді. Пішін нысандары мен элементтері кестелердің, жолдардың және ұяшықтардың құдайсыз санына салынған.

Мен қажетті барлық элементтерді JavaScript арқылы сүзуге, оларды массивке орналастыруға және осы элементтерді пайдалана отырып, жаңа frontenddeveloper-достық белгілеуін жасауға тырысамын.

Енгізу алаңдары, аңыздар мен кен орындарында проблемалар жоқ, бірақ менің белгілерімді сүзу мәселесі бар. Менің жапсырмаларым келесі түрде оралады: <tr> <td> Label </td> </tr> немесе <tr> <td> Label </td> </tr> - Мен оларды сүзгіден өткізу керек және оларды массивке орналастыру керек.

Тексерудің қарапайым тәсілі бар ма, егер менің td құрамында regex пайдаланудан басқа енгізу немесе басқа html элементі емес таза жол бар болса?

var regex = new RegExp(???);
jQuery("td").each( function() {
    if(jQuery(this).has("b") || regex.test(jQuery(this).text()))
    {
       //Do stuff here
    }
}

Алдын-ала рақмет

0

2 жауаптар

Сіз бұл тізімді көре аласыз

var regex = new RegExp('^[^<]*$').

Бұл td мәтінінде еш жерде ашылмаған html тегі болмаса, сәйкес келеді. Бос жолдармен сәйкес келмесе, * орнына + пайдаланыңыз.

Түсіндірме

"^" +      //Assert position at the beginning of the string
"[^<]" +   //Match any character that is NOT a “<�����������������������������������������������
2
қосылды
Мен бұл тәсілді қолданамын - бұл қарапайым әрі қарапайым нәрсе еді.
қосылды автор MadsMadsDk, көзі

Бұл балалардың болмауы немесе бірыңғай баланың бар екенін білдіреді.

$('td').filter(function() {
    var children = $(this).children();
    return children.length == 0 
              || (children.length == 1 && children.first().is('b'))
});

http://jsfiddle.net/t9bMG/

Егер сіз нақты мәтін бар элементтерді ғана қайтарғыңыз келсе, оны пайдалана аласыз:

$('td').filter(function() {
    var t = $(this), children = t.children();
    return t.text().length > 0 
               && (children.length == 0 
                    || (children.length == 1 && children.first().is('b')))
})

http://jsfiddle.net/t9bMG/1/

2
қосылды
Менің түзетуімді қараңыз. Сіз екінші мысалды алғыңыз келеді.
қосылды автор Richard Dalton, көзі
Np, сіздің сұрағыңыз 'regex-ды пайдаланудан өзгеше' деп айқын көрсетті;)
қосылды автор Richard Dalton, көзі
Сондай-ақ, менде балалар жоқ және ешқандай жолдар жоқ, сондықтан мен td шын мәнінде жолды қамтитынына сенімді болуым керек.
қосылды автор MadsMadsDk, көзі
Бұл сондай-ақ жұмыс істейді және қолайлы жауап болып табылады, бірақ regex-жолы қарапайым деп ойлаймын. Бірақ рахмет! :)
қосылды автор MadsMadsDk, көзі