这不是一个如何替换属性值的问题,而是在页面(或此对象)上的最后一项加载后强制更改它。
设置: 我正在使用内容发布平台 - Hubspot - 我正在尝试利用他们的CTA小部件功能。但是,我不希望这个特定的CTA重定向到另一个页面(Hubspot UI需要一个URL),我还想添加一个数据属性,用作我的事件监听器。
问题: 我有我的jquery代码正确地针对有问题的CTA,并且如果我通过控制台执行代码,则能够替换和添加我的值,但是作为js文件中的脚本它不起作用(文件放在最后)。所以我的想法是这个CTA对象实际上是在我写完的所有其他东西之后呈现的。
这是输出的CTA
<a id="cta_button_UNIQUE-ID" class="cta_button book-a-demo-cta"
href="https://SOME-LONG-TEMPORARY-URL-STRING" style="" title="Get a customized demo">
Get a customized demo</a>
这是我的jquery
$('#cta_button_UNIQUE-ID').attr('href', '#').attr('data-ix', 'show-
book-demo-modal');
同样,如果我通过控制台执行代码,一切都按照我的意愿运行,但不是作为一个独立的脚本。此外,我不认为这是一个js文件问题,因为同一文件中的其他代码执行并运行。
非常感谢!
答案 0 :(得分:0)
如果您认为以后出现,只需轮询直至您看到它(如果没有出现,则在合理时间后放弃):
var start = Date.now();
(function updateElement() {
var el = $('#cta_button_UNIQUE-ID');
if (!el.length) {
// Not found (yet)
if (Date.now() - start > 30000) {
// Give up
} else {
setTimeout(updateElement, 250);
}
} else {
// Got it, do the update
el.attr('href', '#').attr('data-ix', 'show-
book-demo-modal');
}
})();
...可能全部包含在IIFE中以避免使start
成为全球性的。