jQuery的:如果(目标)是('.wrapper')的孩子然后(做一些事情)

var target = $(this).attr("href"); if {target is child of ('.wrapper')} then (do something) 

简单的语法? 有人能告诉我这里正确的语法吗?

 if($(target).parents('.wrapper').length > 0) { //do something... } 

.has()也许是mose方便的语法:

 if( $('.wrapper').has($(target)) ) { // do something } 

更加“强大”(就性能而言)是$.contains() 。 所以一个理想的algorithm应该是这样的:

 var $wrapper = $('.wrapper'), $target = $(this).attr('href'); if( $.contains($wrapper[0], $target[0]) ) { // do something } 

参考: .has() , $ .contains()

这里有一个更加整洁的方法:将其绑定为一个jQuery插件。 你可能会发现它更容易理解和使用。

  $.fn.isChildOf = function(element) { return $(element).has(this).length > 0; } 

用法:

  if ( $('.target').isChildOf('.wrapper') ) { //do all the things. } 

如果孩子的深度比一个水平深,那么雅各布的代码就会有小的变化。

 if($(target).parents('.wrapper').length) { //do something... } 

你可以像在链接中一样使用父母或父母的方法

http://jsfiddle.net/6BX9n/

http://jsfiddle.net/6BX9n/1/

 <div class="parent"> <div class="child"> </div> </div> $(".child").is(".parent .child") 

你不能绑定另一个事件吗?

 $('.wrapper *').click(function() { // will execute on childrens of .wrapper }); 

我知道这是旧post,但可能对某人有用。 在我看来,在很多情况下使用.closest()会有更好的性能:

 if ($(target).closest('.wrapper').length){ // your code here }