From 4fe13cb0febee1ffdf55cdaa7c4c81210a4f1676 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 8a27562729693e54873b28f01e9d8173dab002df) --- 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