jQuery ON方法子标记问题

时间:2012-02-28 15:12:53

标签: javascript jquery

我发现在Chrome和IE中插入问题的FF运行良好

我有下一个更改类名

的代码
 jQuery(document).on("mouseout", ".buttonStyleOver", { className: "buttonStyle" }, ChangeClass);
    jQuery(document).on("mouseover", ".buttonStyle", { className: "buttonStyleOver" }, ChangeClass);

    function ChangeClass(e) {
            var el = e.srcElement || e.target;
            jQuery(el).attr("class", e.data.className);        
    }

我有下一个HTML部分(请不要批评我知道这是不好的风格)

<button id="RunItButton" class="buttonStyle" type="button" style="vertical-align:middle;padding-right:5px;height:25px"><div class="cmRunIt">Run It</div></button>
在IE和Chrome事件中还将 class =“cmRunIt ”更改为buttonStyleOver如何解决? 感谢。

2 个答案:

答案 0 :(得分:1)

为了让您了解您的问题,请添加console.log:

var el = e.srcElement || e.target;
console.log(el);

你会看到有些时候el不是你的按钮而是div!为什么使用e.srcElement?

尝试:

function ChangeClass(e) {
  jQuery(this).attr("class", e.data.className);        
}​

marius是对的,除非你需要直播活动,否则你应该使用悬停。

答案 1 :(得分:0)

你不能这样做吗?

$("#RunItButton").hover(function(){
  $(this).addClass("buttonStyleOver");
}, function(){
  $(this).removeClass("buttonStyleOver");
});

或:

$("#RunItButton").mouseover(function(){
  $(this).addClass("buttonStyleOver");
}).mouseout(function(){
  $(this).removeClass("buttonStyleOver");
});