3 votes

Utilisation du javascript `this.closest` dans IE11 et Chrome

Dans IE11 le code ci-dessous montre l'erreur suivante, mais il fonctionne dans Chrome

L'objet ne supporte pas la propriété ou méthode 'closest'4:31 PM 09/07/16

assetTable.on("click", "td.clickProgress", function onDataTableRowClicked(event) {
  var tr = this.closest("tr");
  var assetId = tr.id.replace("asset_", "");
  LoadDialog(assetId);
}

Cependant, lorsque je le change en $(this) il fonctionne à la fois dans IE et Chrome

assetTable.on("click", "td.clickProgress", function onDataTableRowClicked(event) {
  var tr = $(this).closest("tr");
  var assetId = tr.attr('id').replace("asset_", "");
  LoadDialog(assetId);
}

Y a-t-il une raison derrière ce problème de compatibilité entre les navigateurs ?

11voto

Li357 Points 31390

Vérifiez Le tableau de compatibilité de MDN pour element.closest . Par le lien :

Il s'agit d'une technologie expérimentale La spécification de cette technologie n'étant pas stabilisée, consultez le tableau de compatibilité pour connaître son utilisation dans différents navigateurs. Notez également que la syntaxe et le comportement d'une technologie expérimentale sont susceptibles d'être modifiés dans les futures versions des navigateurs en fonction de l'évolution de la spécification.

element.closest est une technologie expérimentale qui n'est pas prise en charge par IE. Dans ce cas, vous utilisez la fonction JavaScript this non modifié. La raison pour laquelle $(this).closest fonctionne parce que vous l'intégrez dans un objet jQuery, ce qui lui fait utiliser La fonction la plus proche de jQuery .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X