JQuery/javascript арқылы ASP.NET қайталағышында нақты html элементін қалай таңдауға болады?

Менде әрбір келесі ItemTemplate кодтың келесі даналары жасалып/құрастырылған ASP.NET Repeater басқару элементі бар.

Мен jQuery/javascript-да функция құруға тырысамын, мұнда «qualityBox» мәтіндік өрісіндегі мән жоғары көрсеткі басылған сайын көбейтіледі. Менің кодыммен бұл тек бірінші 'ItemTemplate' данасы үшін ғана жұмыс істейді, яғни менің Repeater ішіндегі бірінші жол.

Осы жұмысты Репитердегі әр жолға шығара алу үшін маған біреуі жол көрсете ме? Басқаша айтқанда, қатардағы батырма осы санаттағы 'quantityBox' мәнін тек 1-ге дейін көбейтеді.

Рахмет!

1

2 жауаптар

Кодыңызбен мәселе - сіздің идентификаторыңызды пайдалану. Id-тың бірегей болуы мүмкін. Сондықтан, jQuery біріншісін тапқан кезде, ол пайдаланылады. Сізге класс сияқты қайталанатын нәрсе керек.


    <div>
        <input type="text" id="quantityBox" value="0"/>
        <input type="button" class="upButton"/>
    </div>

Әрі қарай, сіз дұрыс мөлшердегі қорапты таңдай аласыз.

 $(".upButton").click(function() {
     var quantityBox = $("#quantityBox", $(this).parent());
     var currentValue = quantityBox.val();
     quantityBox.val(parseInt(currentValue) + 1);
 });

Бұл бірінші нәрсе - селекторды .upButton батырмасын басу үшін өзгерту. Бұл оқиға тек бірінші болып емес, .upButton барлық даналарына қосылады.

Содан кейін, айнымалы мәнді жасай алсаңыз және оны жай ғана пайдалана отырып, неге DOM желісін екі рет орындау керек?

Үшіншіден, контейнер параметрін қосқандықтан, quantityBox үшін идентификаторды сақтау жақсы. Бұл, айталық, тектік элементтің элементін алу, бұл жағдайда td болады. Содан кейін, сол элемент ішіндегі #quantityBox іздеңіз.

Бұл суретті беріңіз.

2
қосылды
егер элемент үлгілері ортақ ата-аналармен бөліссе, $ («# quantityBox», $ (this) .parent ()); қатарынан бірнеше енгізуді қайтару қаупі бар.
қосылды автор Ivaylo Slavov, көзі
Мазаламаңыз, мен сізді кодының күрделілігін қайта қарауға талпындырғанша мен бұл элемент үлгісіндегі өзара әрекеттерге «ауқымға» бөлу керек екенін есіме түсірмедім. Менің ойымша, екі шешімді біріктіру өте жақсы болуы мүмкін :)
қосылды автор Ivaylo Slavov, көзі
Иә, дауыс беруге тұрарлық :)
қосылды автор Ivaylo Slavov, көзі
Көмек алу үшін Сізге үлкен рахмет! Ол жұмыс істеді :)
қосылды автор Dot NET, көзі
Дегенмен, мен бұл DataRepeater ішінде болған деп жаздым, демек, ол td элементіне орналастырылады. Дегенмен, бұл мәселені жеңілдету үшін, сіз 2 жазбаны div-да сіздің лауазымыңыздағы сияқты орауға болады. Бұл, әдетте, жаман деп болжанғандықтан, оны кодтаудың қорғаныс жолы болуы мүмкін :)
қосылды автор mccow002, көзі
Мен сіздердің сұрақтарыңызға жауап беру үшін жауаптымын
қосылды автор mccow002, көзі

Мен деректердің атрибутын қандай да бір ID идентификаторы бар кіші жолағында жасай аламын, содан кейін сол идентификаторды жоғарғы көрсеткі бар элементіне тіркеп, екеуіңіздің арасындағы қатынасыңыз бар.


    <input type="text" id="quantityBox" data-elementID="$$" value="0"/>
    <input type="button" data-elementID="$$" id="upButton"/>

1
қосылды
@IvayloSlavov - Деректер сипаты HTML5 спецификациясының бөлігі болып табылады. ejohn.org/blog/html-5-data-attributes
қосылды автор Sam, көзі
Мен «соңғы шара туралы» мәселені пайдаланушы html атрибуттарын пайдалануды қарастырамын. Мен UI шеңберлерінің көпшілігі пайдаланушылық атрибуттарды қолдана білетіндіктерін білемін (қарамастан, бұл жарамсыз html нәтижесін шығарады), бірақ мені әрдайым бұл біздің басқаруымызда болса, аулақ болу керек деп үйретеді. Бірақ екі элемент арасындағы өзара байланыс екі үлгідегі шаблонда ғана шектеліп қалуы үшін маңызды.
қосылды автор Ivaylo Slavov, көзі
Рахмет, бірдеңе білу әрқашан жақсы
қосылды автор Ivaylo Slavov, көзі