2016-06-01 16 views
0

Ich habe eine HTML-Tabelle. Im Tag td gibt es ein Kontrollkästchen. Wenn ich auf dieses Kontrollkästchen klicke, wird es wie üblich aktiviert oder deaktiviert. Aber was ich will, ist, dass, wenn ich irgendwo auf die spezifische td klicken, dann das Kontrollkästchen wird auch aktiviert oder deaktiviert. Wenn viele Zeilen und Kontrollkästchen vorhanden sind, kann es schwierig sein, den Mauszeiger genau über das Kontrollkästchen zu setzen und einen Klick zu drücken (die Kontrollkästchen sind klein, so dass es schwierig ist, sie zu finden, ist normal). Also möchte ich, dass es für meinen Kunden einfach ist, wenn er einen Klick außerhalb der Checkbox drückt, aber innerhalb des übergeordneten Tags td dann wird es auch funktionieren.klicken Ereignis auf td nicht funktioniert

Mein JQuery-Code funktioniert sehr gut. Wenn ich nun außerhalb des Kontrollkästchens klicke, wird das Click-Ereignis ausgelöst. Aber das Problem ist jetzt Wenn ich genau auf das Kontrollkästchen klicke, dann funktioniert es nicht. Ich gebe meinen Code unten. Hier ist auch eine jsfiddle link of my code.

<div class='modal-inner-content'> 
    <table style="border: 1px solid black;"> 
    <tr> 
     <td class='check'><input type='checkbox'/></td> 
    </tr> 
    </table> 
</div> 

Mein JQuery-Code:

$('.modal-inner-content').on('click', 'td', function(){ 
    var checked = $(this).find(':checkbox').is(':checked'); 
    $(this).find(':checkbox').prop('checked', !checked); 
}); 

UPDATE
Nun ist die jsfiddle Code funktioniert, ich habe vergessen, die Bibliothek zu schließen. Jetzt sehen Sie dort, wenn Sie außerhalb des Kontrollkästchens klicken, dann funktioniert es, aber wenn Sie genau auf das Kontrollkästchen klicken, dann funktioniert es nicht. irgendeine Hilfe?

+0

seine Arbeit, wenn ich außerhalb des Kontrollkästchen klicken. Ja das ist was ich wollte. aber jetzt, wenn ich genau auf das Kontrollkästchen klicke, funktioniert es nicht. Ich wollte das nicht :) –

+0

oh..okay jetzt verstehe ich –

Antwort

3

Try this:

$('.modal-inner-content td').click(function (event) { 
     if (!$(event.target).is('input')) { 
      $('input:checkbox', this).prop('checked', function (i, value) { 
      return !value; 
      }); 
     } 
    }); 
+0

seine Arbeit jetzt danke. aber kannst du bitte erklären, warum es jetzt funktioniert und warum es vorher nicht funktioniert hat? –

+0

Der Grund war, als Sie auf Check-Box selbst geklickt haben, überprüft wurde immer True ans, das ist, warum es nicht die Checkbox –

+0

ja, aber das Ereignis wird nur ausgelöst, wenn ein 'td' unter' modal-inner-content' div wird angeklickt. Also, was das Kontrollkästchen zurückkehrt, während ich in es klicke, sollte es nicht wichtig sein, richtig? Ich meine, der Trigger ist für das spezifische 'td' nicht für dieses Kontrollkästchen. –

2

in Ihrem jsfiddle fügen Sie einfach JQuery Ressource

https://code.jquery.com/jquery-2.2.4.js

+0

das war ein böser typo –

+0

sorry ich habe vergessen, die bibliothek hinzuzufügen . aber das ist nicht das Problem. Jetzt sehe ich die Bibliothek hinzugefügt, aber es funktioniert immer noch nicht. –

+0

@TilakMadichetti yeah es war haha ​​.... Gehirn funktionierte nicht ... aber ich reparierte es. – Seabizkit

3

Sie es, indem Sie das klickten Element tun können, ist Checkbox oder nach nicht mögen.

$('.modal-inner-content').on('click', 'td', function (e) { 
 
    if (!$(e.target).is(':checkbox')) { 
 
     var checked = $(this).find(':checkbox').is(':checked'); 
 
     $(this).find(':checkbox').prop('checked', !checked); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class='modal-inner-content'> 
 
    <table style="border: 1px solid black;"> 
 
     <tr> 
 
      <td class='check'> 
 
       <input type='checkbox' /> 
 
      </td> 
 
     </tr> 
 
    </table> 
 
</div>

0
$('.modal-inner-content').on('click', 'check', function() { 
    var checked = $(this).find(':checkbox').is(':checked'); 
    $(this).find(':checkbox').prop('checked', !checked); 
}); 
+0

Könnten Sie bitte Ihre Antwort näher erläutern, indem Sie ein wenig mehr Beschreibung der von Ihnen bereitgestellten Lösung hinzufügen? – abarisone

+0

Während dieses Code-Snippet die Frage lösen kann, [hilft eine Erläuterung] (https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) hilft wirklich, die Qualität Ihres Posts zu verbessern.Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erklärenden Kommentaren zu füllen, dies reduziert die Lesbarkeit sowohl des Codes als auch der Erklärungen! –

Verwandte Themen