jquery在元素tr,td和div中添加属性

时间:2013-04-05 14:32:30

标签: jquery

爵士 我需要使用jquery在标记tdtrdiv中添加包含onmouseoutonmouseover的元素。

如果找到了onmouseout="ANY FUNCTION",那么我需要添加属性onblur="SAME FUNCTION AS onmouseout"

然后,如果找到onmouseover="Any Function",那么我需要添加属性onfocus="sane functions as onmouseover"

此功能包含在标记td, tr or div中。

示例td:

<td onmouseover="Menu_HoverStatic(this)" onmouseout="Menu_Unhover(this)" onkeyup="Menu_Key(this)" id="zz1_GS">

然后我需要:

<td onmouseover="Menu_A(this)" onfocus="Menu_A(this)" onmouseout="Menu_Unhvr(this)" onblur="Menu_Unhvr(this)" onkeyup="Menu_Key(this)" id="zz1_GS">

示例tr:

<tr onmouseover="Menu_HoverDynamic(this)" onmouseout="Menu_Unhover(this)" onkeyup="Menu_Key(this)" id="zz86756f">

然后我需要这样的东西:

<tr onmouseover="MDynamic(this)" onfocus="MDynamic(this)" onmouseout="Menu_r(this)" onblur="Menu_r(this)" onkeyup="Menu_Ky(this)" id="zz86756f">

示例div:

<div class="1_5656" id="d867444f" onmouseover="PopOUp(this)" onmouseout="PopOStop(this)" style="text-align:center;">

然后我需要这样的东西:

<div class="1_5656" id="d867444f" onmouseover="PopOUp(this)" onfocus="PopOUp(this)" onmouseout="PopOStop(this)" onblur="PopOStop(this)" style="text-align:center;">

id名称不相同,td和tr的级别不一致。

任何人都可以帮助我实现这个目标吗?

我已经完成了这段代码,但它无效:

            $('div[onmouseout]').each(function() {
        $(this).attr('onblur', $(this).attr('onmouseout'));
        }

        $('div[onmouseover]').each(function() {
        $(this).attr('onfocus', $(this).attr('onmouseover'));
        }

        $('tr[onmouseout]').each(function() {
        $(this).attr('onblur', $(this).attr('onmouseout'));
        }

        $('tr[onmouseover]').each(function() {
        $(this).attr('onfocus', $(this).attr('onmouseover'));
        }

        $('td[onmouseout]').each(function() {
        $(this).attr('onblur', $(this).attr('onmouseout'));
        }

        $('td[onmouseover]').each(function() {
        $(this).attr('onfocus', $(this).attr('onmouseover'));
        }

2 个答案:

答案 0 :(得分:0)

实际上可以通过复制属性来实现这一点,并使用空属性选择器来获取具有该特定属性的所有元素:

var $mo = $('[onmouseover]'),
    fstr = $mo.attr('onmouseover'),
    bstr = $mo.attr('onmouseout');
$mo.attr('onfocus',fstr).attr('onblur',bstr);

答案 1 :(得分:0)

试试这个

$("div, tr, td").not("[onmouseout='']").each(function () {
    $(this).attr('onblur', $(this).attr('onmouseout'));
});

$("div, tr, td").not("[onmouseover='']").each(function () {
    $(this).attr('onfocus', $(this).attr('onmouseover'));
});

<强>更新 这只是检查工作正常。重新检查我的代码,找出失败的地方:

<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
 <script>
 function PopOUp() {}
 function PopOStop() {}

 $(function () {
    $("div, tr, td").not("[onmouseout='']").each(function () {
        $(this).attr('onblur', $(this).attr('onmouseout'));
    });

    $("div, tr, td").not("[onmouseover='']").each(function () {
        $(this).attr('onfocus', $(this).attr('onmouseover'));
    });
});
 </script>
</head>
<body>
<div class="1_5656" id="d867444f" onmouseover="PopOUp(this)" onmouseout="PopOStop(this)" style="text-align:center;"></div>

<table onmouseover="PopOUp(this)" onmouseout="PopOStop(this)">
    <tr onmouseover="PopOUp(this)" onmouseout="PopOStop(this)">
        <td onmouseover="PopOUp(this)" onmouseout="PopOStop(this)"></td>
    </tr>
</table>
</body>
</html>