我似乎无法使用jquery更改div的onmouseover属性。在下面的代码中,第1行和第3行工作正常,但第2行什么都不做。
window.parent.$('#note' + appid + dbid).html('<img src="images/note_gray.png">');
window.parent.$('#note' + appid + dbid).attr('onmouseover','testestestsetset');
window.parent.$('#note' + appid + dbid).attr('title', 'testdata');
使用Chrome(13.0.772.0 dev-m)观看开发者工具。我立即看到了两个变化,onmouseover永远不会做任何事情。
.net代码使用onmouseover做一些奇怪的javascript悬停事情。我不想返回并更改所有功能,因此当我更新记录时,我希望它更改悬停提示以反映新数据,而不进行页面回发。这就是我使用onmouseover并尝试从jquery更改它的原因所以请不要问“为什么不使用x代替”。感谢。
--- ---- EDIT
如果它有帮助,这就是我在生成的页面中使用HTML构建编辑功能的样子。原始代码使用名为“Tip”的javascript函数生成hovertip。这是别人写的。我正在为页面编辑模态。当您提交更改时,我希望它更改工具提示。
<div id="note1009872" class="dbnote" onmouseover="Tip('No Notes...')" onmouseout="UnTip()" title="testempty"><img src="images/note.png"></div>
答案 0 :(得分:1)
您正在尝试将事件属性绑定到字符串。这不会让你走得太远。
您需要将它绑定到一个函数,无论它是位于全局命名空间还是闭包的函数:
window.parent.$('#note' + appid + dbid).mouseover(function(){testestestsetset()});
或者:
window.parent.$('#note' + appid + dbid).mouseover(testestestsetset);
好的,事实证明你可以跨越这样的帧,但你的执行空间必须保留在调用帧中,除非命名:
window.parent.$('#note' + appid + dbid).mouseover(function() {
window.parent.Tip('Some Tip...')
});
OR:
window.parent.$('#bar').get(0).addEventListener('mouseover',
function(){window.parent.Tip('Some Tip...')});
我从两个iFrame中获得了示例代码,并对其进行了测试。
答案 1 :(得分:1)
如果您有权访问实际代码,为什么不考虑在Page_Load()
方法或其他适当的方法中添加以下行:
myPanel.Attributes.Remove("onmouseover");
这假设“myPanel”是您页面上的asp:Panel
对象。
答案 2 :(得分:0)
jQuery使用.setAttribute()
方法设置属性值does not work reliably for getting/setting "traditional" event handlers。要更改传统的事件处理程序,您应该直接执行此操作而不是使用jQuery:
var noteElem = window.parent.document.getElementById('note' + appid + dbid);
noteElem.innerHTML='<img src="images/note_gray.png">';
noteElem.onmouseover = 'testestestsetset';
noteElem.title = 'testdata';
有use jQuery to locate the element(或iterate over multiple elements)的方法,但jQuery在您发布的代码段中没有多大用处。
答案 3 :(得分:0)
我会移除内嵌onmouseover
/ onmouseout
并使用 hover() ,就像 { {3}} 强>:
window.parent.$('#note' + appid + dbid)
.html('<img src="images/note_gray.png">')
.attr("title", "testdata")
.removeAttr("onmouseover")
.removeAttr("onmouseout")
.hover(function() {
// replaces onmouseover
Tip("new test");
}, function() {
// replaces onmouseout
UnTip();
});