L'accès aux données d'attribut à l'aide de jquery retourne undefined?
À l'intérieur de mon point de vue, j'ai un bouton comme suit:
<button data-assigned-id="@IdUser" onclick="updateClick()" type="button" class="btn btn-sm btn-default"></button>
Mon div
<div id="partial_load_div">
</div>
Script
function updateClick() {
var id = $(this).data('assigned-id');
$('#partial_load_div').show();
$('#partial_load_div').load('/Users/UpdatePartial?id=' + id);
}
L'id est toujours montre comme indéterminé, j'ai vérifié et @IdUser
a toujours de la valeur
puis en chrome dev j'ai obtenu l'erreur
OBTENIR http://localhost:19058/Users/UpdatePartial?id=undefined 400 (Bad Request)
Une idée de comment résoudre ce problème?
Supprimer
merci pour votre commentaire, qui fonctionne très bien! pourriez-vous ajouter votre commentaire en une réponse afin que je puisse marquer?
onclick="updateClick()"
et ajouter un nom de classe ou l'id de l'utilisation d'un sélecteur, puis $('#mybutton').click( function) { var id = $(this).data('assigned-id'); ....
merci pour votre commentaire, qui fonctionne très bien! pourriez-vous ajouter votre commentaire en une réponse afin que je puisse marquer?
OriginalL'auteur Maro | 2016-04-06
Vous devez vous connecter pour publier un commentaire.
Dans votre script,
$(this)
se réfère à laWindow
objet (pas de bouton) qui n'ont pas dedata-
attribut de sorte que sonundefined
.Vous pourriez résoudre cela en passant de l'élément de la fonction
Cependant une meilleure approche est d'utiliser Javascript Discret plutôt que de polluer votre balisage avec le comportement.
Cette erreur n'arrivera jamais, parce que le code de ma réponse. Ma meilleure supposition est que votre
.load()
est le chargement d'une vue partielle qui a balise de script (si oui, retirez - les partiels ne devraient jamais avoir des scripts)J'ai la forme suivante scripts dans mon partiel <script src="~/Scripts/jquery.validate.js"></script> <script src="~/Scripts/jquery.validate.unobtrusive.js"></script> et <script src="~/Scripts/jquery.validate.js"></script> <script src="~/Scripts/jquery.validate.unobtrusive.js"></script> je pense que ceux qui sont importantes pour la validation depuis ma vue partielle est une forme
Vous avez certainement besoin de supprimer les de votre partiel. Déplacer dans la vue principale (ou de mise en page)
et ma validation fonctionnera toujours? ok vais essayer merci beaucoup
OriginalL'auteur
Lors de la lecture des données d'attributs à l'aide
data()
vous devez supprimer le-
et chameau cas la valeur. Donc, vous voulez:la docs sur les données() montrer ceci:
Je n'avais pas remarqué combien votre liaison de l'événement click. Si vous souhaitez utiliser
$(this)
vous devez lier l'événement à l'aide de jquery. Si vous avez besoin de:Travail de violon
Je n'ai pas remarqué un autre problème que vous @Maro. Voir mise à jour
Merci Liam, +1 pour ta réponse
Merci, +1 pour le "supprimer le chameau cas"! besoin d'un alert dans les guides.
OriginalL'auteur Liam