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