2010-05-10 11 views
5

"Göz atmak için sayfadaki bir öğeye tıklayın" okunu FireBug ile tıklattığınızda, hedef öğenin etrafında bir Mavi Kenarlık koyar ve ayrıca DOM Kimliği'ni döndürür."Vurgulanan" (Firebug gibi) css selektörünü veya dom kimliğini jquery ile döndürmek mümkün mü?

Bir uygulama yapıyorum ve bu özellik eklemek harika olurdu. DOM Kimliği veya CSS seçiciyi uygulamaya döndürdüğünüzde, öğeler üzerine gelin ve hedefi vurgulayın.

Bu sihiri yapan bir jQuery eklentisi var mı? Diğer bazı akıllı yolu?

Teşekkür !,

Jonathan

+1

Tster kodu kısadır ve tam olarak böyle yapar. BTW, bu yer imi, basit JavaScript ile istediğinizi yapar: http://mrclay.org/index.php/2006/02/18/click2zap-bookmarklet/ (ihtiyacınız olursa) –

+1

Sadece 3 cevap aldım mı 14 dakika? SO harika! – Jonathan

cevap

1

ve cssPath almak, i bana css seçici döndüren aşağıdaki $.fn.cssPath fonksiyon yazdım gelecekte bu öğeye başvurmak için. Şimdiye kadar çalışıyor.

  $.fn.cssPath = function() { 
      var currentObject = $(this).get(0);   
      cssResult = ""; 
      while (currentObject.parentNode) { 
       if(currentObject.id) { 
       cssResult = currentObject.nodeName + '#' + currentObject.id + " " + cssResult; 
       break; 
       } else if(currentObject.className) { 
       cssResult = currentObject.nodeName + '.' + currentObject.className + " " + cssResult;    
       } else { 
       cssResult = currentObject.nodeName + " " + cssResult;    
       } 
       currentObject = currentObject.parentNode; 
      } 
      return cssResult.toLowerCase(); 
      } 

    $("*").mouseenter(function() { 
     $(".highlight").removeClass("highlight"); 
     $(this).addClass("highlight");   
    }); 

    $("*").bind('click',function(event){ 
    var value = $(this).cssPath(); 
    $('#web_page_filter',top.document).val(value); 
    return false; 
    }); 
4
$("*").mouseenter(function() { 
    $(".highlighted").addClass("unhighlighted").removeClass("highlighted"); 
    $(this).addClass("highlighted"); 
}); 

$("*").mouseleave(function() { 
    $(this).removeClass("highlighted").parents(".unhighlighted").first().addClass("highlighted"); 
}); 

JSFiddle

+1

Sayfadaki her öğeye bir işleyiciyi bağlamak yerine, onu gövdeye bağlamak ve olay temsilcisini kullanmak daha iyi olurdu. – Tgr

+0

+1 Bunu vurgulama için kullandım, css yolunu nasıl aldığımı yanıtıma bakın. Yardımınız için teşekkürler. – Jonathan

0

benzer bir şey yapmak bazı "favlets" (eğer sık ​​kullanılanlara eklemek komut dosyaları) vardır. İşte bir: http://slayeroffice.com/?c=/content/tools/modi.html favlet sadece düz bir eski javascript olduğundan, sayfanızda bu kodu kullanabilirsiniz. Efekti görmek için "Mouseover DOM Inspector" linkine tıklayın.

+0

Bağlantıdaki örnek, sürüm 2 özellikle işe yarıyor. – mdikici

2

Kolayca yapılır. Ne ilgilendiğiniz target geçerli:

$(document).ready(function() { 
    $(document).click(function(e) { 
     alert(e.target); 
     $(".highlight").removeClass("highlight"); 
     $(e.target).addClass("highlight"); 
     var id = e.target.id; // or $(e.target).attr('id'); 
    }); 
});​ 

Burada deneyin: Ben sağlanan Ne tster kullanılan http://jsfiddle.net/3Yw4x/1/

+0

JSFiddle gerçekten harika, şampiyonunuz. – hornairs

İlgili konular