From 7df02e6cdb7cf056a1088dd3abc22213e1f99c99 Mon Sep 17 00:00:00 2001 From: Rene Krenn Date: Thu, 5 Mar 2026 20:06:20 +0100 Subject: [PATCH] MT#63401 jquery upgrade: restore .attr( behaviour repeatable section selectors fail to recognize the selected ceckbox, because .attr() is used, but newer jquery would need .prop(). the compat layer is extended to restore .attr() behaviour. Change-Id: I2dc23cb4dd120080cd6d9aa9d3902ed7285c977b (cherry picked from commit 9752c6c2903107063a99450cd0a8d19943248729) (cherry picked from commit 0b1d08598086f1e0e6df9325c5978218530639ee) --- share/static/js/libs/jquery-compat.js | 49 +++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/share/static/js/libs/jquery-compat.js b/share/static/js/libs/jquery-compat.js index a191d0210b..d22f144746 100644 --- a/share/static/js/libs/jquery-compat.js +++ b/share/static/js/libs/jquery-compat.js @@ -20,13 +20,48 @@ if ( matched.browser ) { jQuery.browser.version = matched.version; } -(function($) { - var $old = $; - window.$ = window.jQuery = function(selector, context) { - if (selector === '#' || selector === '') { - console.warn('jquery # override'); - return $old([]); +(function ($) { + + const booleanAttrs = { + checked: true, + selected: true, + disabled: true, + readonly: true, + multiple: true + }; + + var oldInit = $.fn.init; + + $.fn.init = function (selector, context, root) { + + if (typeof selector === 'string') { + if (selector === '#' || selector.trim() === '') { + console.warn('jquery # override', new Error().stack); + return oldInit.call(this, [], context, root); + } + } + + return oldInit.call(this, selector, context, root); + }; + + $.fn.init.prototype = $.fn; + + const oldAttr = $.fn.attr; + + $.fn.attr = function (name, value) { + + if (booleanAttrs[name]) { + + // getter + if (value === undefined) { + return this.prop(name) ? name : undefined; + } + + // setter + return this.prop(name, !!value); } - return $old(selector, context); + + return oldAttr.apply(this, arguments); }; + })(jQuery); \ No newline at end of file