我有一个HTML页面,其中列出了div
个组件,每个div
组件调用一个函数并将this
作为对象传递。 div
看起来像这样:
<div id="pull-requests-view">
<div class="green-header">This is the 1st title</div>
# this is the div that will flash on double click
<div class="green" ondblclick="flashAndMessage(this)" onclick="unblink(this)" id="tile0">
<img class="profile-photo" src="someImageURL">
<div class="pill-green">
<a class="hypLink" href="UNIQUE_LINK_FOR_EACH_DIV" target="_blank">tag information</a>
</div>
</div>
</div>
这里真正发生的事情是,有多个div,具有不同的id
。当我点击div
时,点击flashAndMessage()
并使用参数this
调用我的div
使用JQuery fadeIn()
和{{fadeOut()
闪烁和闪烁1}}。
除了详细信息之外,实际问题是我实施了轮询,重新呈现HTML,包括所有divs
。所以基本上一旦页面更新,闪烁和闪烁就会丢失。
我尝试了在页面重新加载之前存储this
对象的全局变量,并尝试将变量传递给jQuery find()
函数,以便可以重新应用flashAndMessage()
。
然而它对我不起作用。这是我的职能:
function unblink(selector) {
$(selector).stop()
$(selector).fadeIn({opacity: 1})
}
function blink(selector) {
$(selector).fadeOut('slow', function () {
$(this).fadeIn('slow', function () {
blink(this);
});
});
}
function flashAndMessage(selector) {
var pullReqURL = $(selector).find('.hypLink').attr('href')
blinkList.push(selector) # this is where the `div` is stored before the page reloads
blink(selector)
}
注意:blinkList
是一个全局数组,它是在其他所有数据之上定义的。我有一个循环,在div重新加载后运行,我确实看到我存储在列表中的那些div。但是,当我遍历该列表并将obj传递给flashAndMessage()
时,它不起作用。当重新绘制或失去一些身份时,感觉对象不一样。
答案 0 :(得分:1)
假设您的<div id="pull-requests-view">
的父级 未重新加载轮询代码,则应使用事件委派(而不是内联事件处理程序)。
<div id="parent-id-that-isnt-updated">
<div id="pull-requests-view">
...
</div>
</div>
您可以将事件侦听器附加到不更新的父级,并使其仅在单击的元素与选择器匹配时触发:
var $staticParent = $('#parent-id-that-isnt-updated');
$staticParent.on('dblclick', '.green', function() {
flashAndMessage(this);
});
$staticParent.on('click', '.green', function() {
unblink(this);
});
答案 1 :(得分:1)
由于限制,代码段不起作用,但代码已经过测试且功能正常。
function unblink(selector) {
$(selector).stop();
$(selector).fadeIn({opacity: 1});
sessionStorage.href = "";
}
function blink(selector) {
$(selector).fadeOut('slow', function () {
$(this).fadeIn('slow', function () {
blink(this);
});
});
}
function flashAndMessage(selector) {
sessionStorage.href = $(selector).find('.hypLink').attr('href');
blink(selector);
}
if (sessionStorage.href) {
flashAndMessage($("a[href='"+sessionStorage.href+"']").parent().parent());
}
&#13;
<div id="pull-requests-view">
<div class="green-header">This is the 1st title</div>
<div class="green" ondblclick="flashAndMessage(this)" onclick="unblink(this)" id="tile0">
<img class="profile-photo" src="someImageURL">
<div class="pill-green">
<a class="hypLink" href="UNIQUE_LINK_FOR_EACH_DIV" target="_blank">tag information</a>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;