2016-11-09 1 views
-1

Ich habe Kontrollkästchen dynamisch erstellt, auf jedem Klon erhöhe ich die ID des Kontrollkästchens und lege den gleichen Namen auf die Klasse des Divs, auf der ich die Aktion ausführen möchte, nachdem ich das überprüft habe Kontrollkästchen.
Nun ist das Problem, dass, wenn Checkbox mit neuer ID beim Klicken auf diese neue Box kloniert wird, die Warnung nicht funktioniert, obwohl ich die gleiche Klasse auf alten und neuen Kontrollkästchen habe. Ich habe den Klon js-Code nicht eingefügt, aber es funktioniert, alle Felder werden mit neuen IDs und Klassen geklont.
Hier ist das Snippet für checkbox html und JS.
Konnte ID von dynamisch erzeugtem Kontrollkästchen nicht bekommen

var chauffeur_index = $('.check_chauffer').length - 1; 
 
$('.check_chauffer').last().attr('id', 'Chauffeur_details_' + chauffeur_index); 
 
$('.Chauffeur_details').last().addClass('Chauffeur_details_' + chauffeur_index); 
 

 
$(function() { 
 
    $(".check_chauffer").change(function() { 
 
    alert(this.id); 
 
    if ($(this).is(":checked")) { 
 
     $('.' + this.id).removeClass("hidden"); 
 
    } else { 
 
     $('.' + this.id).addClass("hidden"); 
 
    } 
 
    }); 
 
})
.hidden { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 

 
<input type="checkbox" class="check_chauffer" id="Chauffeur_details_0" name="check_chauffer">Chauffeur 
 
<div class="clearfix"></div> 
 
<input type="checkbox" class="check_airport" name="check_airport" id="airport_details_0">Airport 
 
<span class="help-block"></span> 
 

 
<div class="Chauffeur_details_0 hidden"> 
 
    <div class="col-md-2 booking_details"> 
 
    <h6><strong>Booking Details:</strong></h6> 
 
    </div> 
 
    <div class="col-md-2"> 
 
    <label for="">Per Hour Rate</label> 
 
    <div class="input-group"> 
 
     <input type="number" name="Chauffeur_per_hour_rate[]" class="form-control " required="required"> 
 
    </div> 
 
    </div> 
 
    <div class="col-md-2"> 
 
    <label for="">Min Hours/Day</label> 
 
    <div class="input-group"> 
 
     <input type="number" name="Chauffeur_min_hours_booking[]" class="form-control " required="required"> 
 
    </div> 
 
    </div> 
 
    <div class="col-md-2"> 
 
    <label for="">Max Hours/Day</label> 
 
    <div class="input-group"> 
 
     <input type="number" name="Chauffeur_max_hour_perday[]" class="form-control" required="required"> 
 
    </div> 
 
    </div> 
 
</div>

wenn anyother Code bitte fragen Sie mich erforderlich ist.

+2

Mögliche Duplikat [Ereignis Klicken Sie funktioniert auf nicht dynamisch generierten Elemente] (http://stackoverflow.com/questions/6658752/click-event-doesnt-work-on-dynamically (generated-elements) –

+0

Verwendung, '$ (Dokument) .on ('click', '.check_chauffer', function() { Alarm ('Ihr Code'); });' – Sravan

+0

versuchte das schon, aber Es funktioniert nicht –

Antwort

2

Ihre erste Frage ist, sollten Sie eine delegate an den Ereignishandler hinzuzufügen.

Mit der .on()-Methode können Sie einen beliebigen Event-Handler an folgende Elemente delegieren: aktuelle Elemente oder zukünftige Elemente, die dem DOM zu einem späteren Zeitpunkt hinzugefügt werden können.

$(document).on('click', '.check_chauffer', function() { 
    alert(this.id); 
}); 

Die zweite Sache ist, um sicherzustellen, dass Sie es in document.ready hinzuzufügen.

$(document).ready(function() { 
    $(document).on('click', '.check_chauffer', function() { 
     alert(this.id); 
    }); 
}); 

Reference of direct-and-delegated-events

+0

danke für das Problem mit mir Skimming :) (und jemand gab -1 IDK warum) –

+0

:) froh, Ihnen zu helfen, ich weiß nicht, wer das gab. – Sravan

+0

Sie haben wahrscheinlich eine -1 (nicht ich) bekommen, da das Problem 20 Mal * heute * (mögliche Übertreibung) gestellt wurde, wofür eine einfache Suche das Problem finden würde, –

1

Verwenden Ereignis Delegation für dynamisch erstellen Attribute und Elemente in dem dom elements.It ermöglicht es uns, einen einzelnen Ereignis-Listener für Elemente zu befestigen, die jetzt oder in Zukunft bestehen. Innerhalb der Ereignisbehandlungsfunktion.

$(document).on('change', ".check_chauffer", function(){ 
    alert(this.id); 
}); 
+0

Ich habe das schon versucht, aber es funktioniert nicht. –

Verwandte Themen