jquery设置'onmouseover'attr似乎不起作用?

时间:2011-05-24 21:01:22

标签: javascript jquery mouseover

我似乎无法使用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>

4 个答案:

答案 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();

    });