2012-04-22 116 views
1

你好,我已经看到了类似的帖子,但没有回答我要完成 我做这里的样本 http://jsfiddle.net/edgardo400/R6rVJ/获得子元素的ID时,父被点击

而当点击发生在父我基本上想要的是什么你的孩子 的ID,并将其存储在一个变量,所以我可以传递变量currentID到下面的代码,否则我将不得不复制这些代码9次从BOX1每个ID BOX9

jQuery(currentID).delegate("a", "hover", function(event){ 

     var $img = jQuery(this).parent("li").find('img'); 
     var image = jQuery(this).attr('data-img'); 
     jQuery('.defaultimg').stop(true, true).fadeOut(); 
     if(event.type === 'mouseenter') { 

      if($img.length){ 
       $img.show(); 

      }else{ 
       jQuery(this).parent("li").append('<img id="theImg" src="' + image + '" />'); 
      } 

     }else{ 
      if($img){ 
       $img.hide(); 
      } 
      jQuery('.defaultimg').stop(true, true).fadeIn(); 
     } 
    }); 
}); 
+0

如果点击事件发生在子元素的边界之外,那么这个系统应该如何决定要显示哪个孩子ID? – 2012-04-22 17:09:33

+1

你知道吗,你只需要以长格式编写'jQuery'一次?通过将代码封装在'(function($){....})(jQuery);'中,无论是否使用了noConflict,都可以使用'$'。 – ThiefMaster 2012-04-22 17:12:55

+0

对不起,如果不清楚系统会知道,因为它是点击的孩子我只是想系统告诉我什么孩子被点击的ID,并从那里做基于该ID的事件 我在这里有一个工作模式很好当我说这个ID反正 http://testdomain.edgardoroldanonline.com/apple-power/ 你可以看到它在中毒控制工作 – 2012-04-22 17:23:38

回答

5
$('#boxes').on('click', function(e) { 
    var currentID = e.target.id; 
    console.log(currentID); 

......rest of code 
+0

我以前试过,它给了我的父母的ID ...我想要的是,当孩子是点击jquery获取它的id,然后用它来执行fadeouts和使用该id的所有内容 – 2012-04-22 17:26:49

+1

那么,你尝试了它错误:-)似乎为我工作,它给出了单击框的ID [FIDDLE](http ://jsfiddle.net/adeneo/R6rVJ/1/),至于其他代码,我无法猜测它应该是什么样子,因为它在你的小提琴中缺少。 – adeneo 2012-04-22 17:31:25

+0

我看着你的小提琴,我看到console.log仍然存在,但我不能看到它不显示在萤火虫中的id。我新来的小提琴你怎么看?你会得到什么标识,你会得到盒子或孩子ID box1例如 – 2012-04-22 17:35:34

1

如果你只希望让你的代码工作并在你的con上显示唯一的文件夹名称,你应该设置

jQuery('#boxes').bind('click', function(event) { 

    var currentID = jQuery(event.srcElement).attr('id'); 

    /* rest of your code */ 
}); 

你可能想要做一些轻松

jQuery('#boxes').children().bind('click', function() { 

    jQuery(this).delegate... 

}); 

虽然我不知道你为什么这样做?

固定http://jsfiddle.net/nxTDA/

+0

我真的觉得显示为什么我这样做,你可以看到它在 http:///testdomain.edgardoroldanonline.com/apple-power/当你点击中毒控制时,框出现,我希望当你悬停在任何ul项目时出现不同的图像 http://jsfiddle.net/edgardo400/cham5 /新版本 到目前为止它有工作的唯一方法编辑是放置id box1).delegate – 2012-04-22 17:10:06

+0

我只是好奇,因为每个问题都有很多解决方案,如果他能从更大的角度看问题,有人会提出更好的解决方案。很公平。 – drinchev 2012-04-22 17:19:40

+0

它确定:D所以你认为是什么可以让jquery存储当它点击的孩子的id时 – 2012-04-22 17:28:36

1

在javascript中它会是:

var a = document.getElementById('#boxes'); 
a.onclick = function(e){ 
    console.log(e.target.id); 
}