我有一个div列表,这些列表具有单独的onclick函数。 该功能导致在新窗口中打开的http链接。在生成网站之前,我无法重写onclick函数,因为它是基于rss文件生成的第三方rss feed。现在,我希望保留各个链接,但对它们进行其他操作。
年表如下:
到目前为止,我已经尝试覆盖onclick函数。但是我在此过程中丢失了http链接。
<div class="fw-feed-item-url"
onclick="window.open('http://www.example.com/podcasts/podcast_eposode3.mp3'
, '_blank')">
$(".fw-feed-item-url").click(function(){
var audioSrcNew = eval($('.fw-feed-item-url').attr('onclick'));
audioElement.src = audioSrcNew;
console.log(audioSrcNew);
$('.fw-feed-item-url').this.attr('onclick','alert("done"); return
false;');
});
答案 0 :(得分:0)
在JavaScript中,回调和事件处理程序应按绑定的顺序执行,并且无法更改该顺序。 onclick属性中的代码将在创建元素后直接绑定,因此将是第一个执行的代码。
防止这种情况的唯一方法是使用jQuery的.removeAttr
在源或客户端中删除属性。因此,请像以下示例代码一样覆盖页面加载时的onclick
事件。
<script>
$(document).ready(function() {
var $elements = $(".fw-feed-item-url");
// Iterate over elements
$elements.each(function () {
var $elm = $(this);
// Reference to onclick attribute value for future use
var onClick = $elm.attr("onclick");
console.log(onClick);
// Remove onclick attr and bind your own click event
$elm.removeAttr("onclick").click(function () {
//Own code comes here
alert("Whoa!!!! click worked!!");
})
});
});
引用自 How to decide execution sequence for Javascript and Jquery function