2012-07-02 83 views
0

我有相同的類的各種元素。jQuery的懸停和點擊事件返回多個對象

我想對所有元素的事件,但我只想從第一個元素收集信息,像這樣:

elements[i].before = css($(elements[i].handle).first()); 

當我將鼠標懸停在它給我每個元素的警報的元素。 !..大...但CSS()函數的CSS甚至返回元素的所有3雖然我使用的第一個()...堆疊功能是:

function css(a){ 
     var sheets = document.styleSheets, o = {}; 
     for(var i in sheets) { 
      var rules = sheets[i].rules || sheets[i].cssRules; 
      for(var r in rules) { 
       if(a.is(rules[r].selectorText)) { 
        o = $.extend(o, css2json(rules[r].style), css2json(a.attr('style'))); 
       } 
      } 
     } 
     return o; 
    } 

    function css2json(css){ 
     var s = {}; 
     if(!css) return s; 
     if(css instanceof CSSStyleDeclaration) { 
      for(var i in css) { 
       if((css[i]).toLowerCase) { 
        s[(css[i]).toLowerCase()] = (css[css[i]]); 
       } 
      } 
     } else if(typeof css == "string") { 
      css = css.split("; ");   
      for (var i in css) { 
       var l = css[i].split(": "); 
       s[l[0].toLowerCase()] = (l[1]); 
      }; 
     } 
     return s; 
    } 

我曾嘗試:

if(event.target != this){ 
    return true; 
} 
event.stopPropagation(); 

無濟於事......完整的源位置:

var options = [ 
     '#content', 
     'h5'    
    ]; 
    var elements = []; 
    var current_item = ''; 


      for(a in options){ 
       elements[a] = { 
        'handle': options[a], 
        'before': '', 
        'after': '' 
       }; 

       $(elements[a].handle).attr('index', a); 

       $(elements[a].handle).hover(
        function(event){ 
         if(event.target != this){ 
          return true; 
         } 
         event.stopPropagation(); 
         var i = get_index(this); 
         elements[i].before = css($(elements[i].handle).first()); 
         $(this).css({ 
          border: '1px dashed red', 
          padding: '5px' 
         }); 
        }, 
        function(){ 
         var i = get_index(this); 
         $(this).css(elements[i].before); 
        } 
       ); 

       $(elements[a].handle).click(
        function(){ 
         if(event.target != this){ 
          return true; 
         } 
         event.stopPropagation(); 
         var i = get_index(this); 
         alert(i); 
         $('#current_item').val(options[i]);  
        } 
       ); 
      } 

任何想法?

回答