2013-09-23 42 views
7

Tôi cólàm thế nào để gọi jQuery (this) từ thẻ neo chức năng onclick

<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> 

mã và muốn thêm tên lớp để một thẻ parrent thẻ li ví dụ class="selected" bu hát jquery. tôi đã sử dụng mã jquery này

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

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

Nhưng dòng này jQuery(this).closest('li').addClass("selected"); không hoạt động ...

Xin hãy giúp tôi ra ...

+0

Phụ thuộc vào những gì 'this' có trong hàm. – Joseph

+0

'this' là đối tượng cửa sổ, gỡ lỗi nó sẽ cung cấp cho bạn câu trả lời –

Trả lời

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"); 
    } 

hoặc

js

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

điều này sẽ hoạt động trên nhấp chuột phải và mở tab mới hoặc Ctrl + nhấp (command + click). có cách nào khác để đạt được điều này không? – flipper

2

Bạn cần phải gửi phần tử thông qua chức năng như thế này

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> 

thay thế

<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

Một dòng:

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

nhưng bạn sẽ phải sửa đổi sự kiện của bạn đi qua 'này';

onclick="setSelectedTestPlan(this);"