$(document).ready(function() { $('#mytable td').click(function() { $(this).toggleClass('newclass'); }); }); </script> Бұл"> $(document).ready(function() { $('#mytable td').click(function() { $(this).toggleClass('newclass'); }); }); </script> Бұл"> $(document).ready(function() { $('#mytable td').click(function() { $(this).toggleClass('newclass'); }); }); </script> Бұл" />

jquery - 2 элементке дейін шектеуді шектеу

<script type="text/javascript">
        $(document).ready(function() {
            $('#mytable td').click(function() {
                $(this).toggleClass('newclass');

            });
        });
    </script>

Бұл функция кестемдегі таңдалған бағанның класын өзгертеді. Бұл жақсы жұмыс істейді.

Дегенмен, ол бірден екі бағанды ​​таңдауға мүмкіндік бермеуі керек (таңдалған бойынша, жаңа сынып ауыстырылған баған дегенді білдіреді - newclass). Сондықтан басқа бағандар басылғанда ғана әрекет етпеуі керек.

Мұны қалай істеуге болады? Қазіргі уақытта жаңа бағанның қанша бағаны пайдаланатынын және егер ол 2 болса, функцияны болдырмауды есептей аламын. Мен оларды қалай есептеуге болатынын білмеймін, немесе мұны істеудің ең жақсы жолы.

0

4 жауаптар

2-ден артық емес қамтамасыз етудің бір жолы

jsfiddle

$('#mytable td').click(function() {
    var $this = $(this);
   //toggle 'on' if
   //1. it doesn't already have the class and
   //2. and there are less than two set to .newclass
   //toggle 'off' if
   //1. it already has the class and
   //2. and there are less than two set to .newclass
    $this.toggleClass('newclass', 
        !$this.hasClass('newclass') && 
        $('#mytable .newclass').length < 2);
})
2
қосылды

Size() әдісі сізге басқа таңдау элементтерінің селекторға сәйкестігін көрсетеді, сондықтан сіз бұған дейін toggleClass() қолданбасын қолдану:

<script type="text/javascript">
    $(document).ready(function() {
        $('#mytable td').click(function() {
           if ($("#mytable td.newclass").size() < 2) 
           { 
               $(this).toggleClass('newclass');
           }

        });
    });
</script>
1
қосылды
.size() ретінде .length функциясын .size() функциясынан «функционалды шақырудың үстінен» құжаттама.
қосылды автор Jason Gennaro, көзі
Оның орнына .length дегенді пайдаланыңыз, ол .size() сияқты бірдей jQuery құжаттамасына сәйкес келеді. .length сипаты артықшылықты, себебі ол функционалды шақыру.
қосылды автор MikeM, көзі

Келесідей ұзындық сипатын пайдаланып көріңіз:

<script type="text/javascript">
    $(document).ready(function() {
        $('#mytable td').click(function() {
            if ($('#mytable td.newclass').length < 2)){                
                $(this).toggleClass('newclass');
            }
        });
    });
</script>

Бұл көмектеседі деп үміттенемін!

1
қосылды
Ұзақтығы әдіс емес, сіз дәйексөзді бағасызсыз және селекторларыңыз тиімсіз. -1
қосылды автор Ry-, көзі
Мен сөйлейтін селектордың тиімсіздігі кем дегенде бір таңдаудың нәтижесін кэштеудің орнына бірнеше рет таңдау болып табылады. Енді баға белгілерінің және шегінісінің жақсы екендігін мен -1 деп аламын. Міне, бұл үшін. Yeesh.
қосылды автор Ry-, көзі
@minitech Постты редакциялады және селекторлар ОР-ға негізделген. Шындығында -1?
қосылды автор dSquared, көзі
<script type="text/javascript">
    $(document).ready(function() {
        $('#mytable td').click(function() {
            if(!$(this).hasClass('newClass')){
                if($("td.newClass").size() < 2){
                    $(this).toggleClass('newclass');
                }
            }
            else {
                 $(this).toggleClass('newclass');
            }
        });
    });
</script>
1
қосылды