2013-09-23 14 views
7

Mam kodjak zadzwonić jQuery (this) z tagu zakotwiczenia onclick funkcji

<ul> 
      <li><a onclick="setSelectedTestPlan();" href="javascript:void(0);">New Test</a></li> 
      <li><a onclick="setSelectedTestPlan();" href="javascript:void(0);">New Test fdgfdgfdgfdgfdgfdgfdgfdg fdg</a></li> 
      <li><a onclick="setSelectedTestPlan();" href="javascript:void(0);">New Plan</a></li> 
      <li><a onclick="setSelectedTestPlan();" href="javascript:void(0);">Test</a></li> 
     </ul> 

i chce dodać nazwę klasy do znacznika Parrent znacznika li tj class="selected" bu śpiewać jQuery. Kiedyś ten kod jquery

function setSelectedTestPlan() { 
     jQuery("#tree ul li").each(function() { 
      jQuery(this).removeClass("selected"); 
     }); 

     jQuery(this).closest('li').addClass("selected"); 
    } 

Ale ta linia jQuery(this).closest('li').addClass("selected"); nie działa ...

Proszę mi pomóc ...

+0

Zależy od tego, co "ten" jest w funkcji. – Joseph

+0

"ten" jest obiektem okna, debugowanie go dałoby odpowiedź –

Odpowiedz

18

HTML

<li><a onclick="setSelectedTestPlan(this);" href="javascript:void(0);">New Test</a></li> 

js

function setSelectedTestPlan(el) {  
     jQuery("#tree ul li").removeClass("selected"); 
     jQuery(el).closest('li').addClass("selected"); 
    } 

lub

js

function setSelectedTestPlan(el) { 
    jQuery(el).closest('li').addClass("selected").siblings().removeClass("selected"); 
} 
+0

będzie to działało na prawy przycisk myszy i otwórz nową kartę lub Ctrl + kliknięcie (polecenie + kliknięcie). czy istnieje inny sposób, aby to osiągnąć? – flipper

2

Musisz wysłać element za pomocą funkcji takich jak to

HTML

onclick="setSelectedTestPlan(this);" 

js

function setSelectedTestPlan(ele) {  
     jQuery("#tree ul li").each(function() { 
      jQuery(this).removeClass("selected"); 
     }); 

     jQuery(ele).closest('li').addClass("selected"); 
    } 
1
function setSelectedTestPlan(e) { 
    jQuery("#tree ul li").each(function() { 
     jQuery(this).removeClass("selected"); 
    }); 

    jQuery(e).closest('li').addClass("selected"); 
} 

<li><a onclick="setSelectedTestPlan(this);" href="javascript:void(0);">New Test</a></li> 

alternatywa

<ul> 
     <li><a class="mylink" href="javascript:void(0);">New Test</a></li> 
     <li><a class="mylink" href="javascript:void(0);">New Test fdgfdgfdgfdgfdgfdgfdgfdg fdg</a></li> 
     <li><a class="mylink" href="javascript:void(0);">New Plan</a></li> 
     <li><a class="mylink" href="javascript:void(0);">Test</a></li> 
    </ul 


$(function(){ 
$(".mylink").click(function(e){ 
    $(".mylink").parents("li").removeClass("selected"); 
    $(this).parents("li").addClass("selected"); 
    e.preventDefault(); 
    }); 
}); 
2

Jedna linia:

jQuery(this).closest('li').addClass("selected").siblings().removeClass("selected"); 

ale trzeba będzie zmienić swoje wydarzenie, aby przejść przez 'to';

onclick="setSelectedTestPlan(this);"