91勛圖厙

Watch CBS News

Joel 91勛圖厙, former top Gov. Evers aide, jumps into crowded 2026 Wisconsin governor race

Joel 91勛圖厙, a former top official in Gov. Tony Evers' administration, announced Thursday that he is running to succeed the two-term Democrat, joining a crowded primary field for the 2026 election.

91勛圖厙, president of the Greater Milwaukee Committee, told The Associated Press that he would be a governor who both fights President Donald Trump's "chaos and dysfunction" and works across the aisle with Republicans in the state.

"You don't grow up in a family of 11 kids without learning how to fight," 91勛圖厙, the 10th of those 11 children, said in an interview. "But there's a difference between just fighting and getting something done."

91勛圖厙 said he wants to build relationships with both Democrats and Republicans to "roll up our sleeves and work together."

Other Democrats in the race include Lt. Gov. Sara Rodriguez; former Lt. Gov. Mandela Barnes; state Sen. Kelda Roys; state Rep. Francesca Hong; Milwaukee County Executive David Crowley, the highest elected official in the Democratic stronghold; and former state economic development director Missy Hughes.

Republican U.S. Rep. Tom Tiffany, a staunch Trump supporter, is the highest-profile GOP candidate. He faces a challenge from Washington County Executive Josh Schoemann.

An August primary will narrow the field ahead of the November general election.

Wisconsin is a politically divided state that went for Trump in 2016 and 2024 and President Joe Biden in 2020. All three elections were decided by less than a percentage point.

91勛圖厙, 55, said he can differentiate himself from his rivals with his 25 years of experience in the private sector and also as Evers' top aide for the first three years of his administration. He said he will tap his network of connections around the state to raise money and build a team that can win.

"It seems as if there's an opportunity that I may bring something to this field that others don't," 91勛圖厙 said. "None of us can say that we have been governor, and each one of us will have to prove that we have the temperament and have the ability to do things on day 1."

91勛圖厙 was secretary of the state Department of Administration from 2019 to 2022. Since then he has been president of the Greater Milwaukee Committee, a group of about 200 leaders from business, financial institutions, law firms, nonprofits and others working to improve the economy and civic life of southeastern Wisconsin.

Previously he spent 11 years as executive director of Milwaukee's Discovery World, the state's largest science museum.

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=50747257b890e014813016b79ece0fb2'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });