将 location.href 更改为 jQuery

Change location.href with jQuery

我需要更改我网站上某些网址的 location.href。这些是产品卡片,它们不包含“a”(这会使这更容易)。

这里是 HTML:

<div class="product-card " onclick="location.href='https://www.google.com'">

我的意思是它非常简单,但我就是无法让它工作。没有找到 Google 中没有此类结果的任何结果,所有结果都包含 "a":

$("a[href='http://www.google.com/']").attr('href', 'http://www.live.com/')

关于如何让它与 jQuery(或简单的 JS)一起工作有什么想法吗?

不幸的是,我不能更改代码本身,我只能用 jQuery 和 JS 来操作它。

要更改所有 class='product-card'onClick,您可以这样做:

// All the links
const links = document.getElementsByClassName('product-card');

// Loop over them
Array.prototype.forEach.call(links, function(el) {

    // Set new onClick
    el.setAttribute("onClick", "location.href = 'http://www.live.com/'" );
});
<div class="product-card " onclick="location.href='https://www.google.com'">Test</div>

将产生以下 DOM:

<div class="product-card " onclick="location.href = 'http://www.live.com/'">Test</div>

另一种选择是遍历每个 <div> 并检查 onClick 中是否存在类似 google.com 的内容,如果是这样,我们可以安全地更改它而不改变任何其他内容具有相同 class 的 div,如下所示:

// All the divs (or any other element)
const allDivs = document.getElementsByTagName('div');

// For each
Array.from(allDivs).forEach(function(div) {

  // If the 'onClick' contains 'google.com', lets change 
  const oc = div.getAttributeNode('onclick');
  if (oc && oc.nodeValue.includes('google.com')) {
  
     // Change onClick
     div.setAttribute("onClick", "location.href = 'http://www.live.com/'" );
  }
});
<div class="product-card" onclick="location.href='https://www.google.com'">Change me</div>
<div class="product-card">Don't touch me!</div>