2011-03-21 70 views
0

我想弄清楚如何在fancybox中打开一个相对于点击链接的div。fancybox打开相对格

<div class="tool">    
    <ul>    
     <li><span class="more-info"><a href="#" title="View more info">?</a></span>   
      <div class="help">This is the help text</div>   
     </li> 
    </ul> 
</div> 

我知道我可以像#uniqueDiva,然后一个div补充点儿ID uniqueDiv,但是我宁愿链接被点击时,它会打开与help类最接近的股利。

我想是这样的,没有运气:

$('.more-info a').click(function(e){ 
    $(this).parent().next().fancybox(); 
    e.preventDefault(); 
}); 

任何帮助将非常感激。

-Ryan

回答

0

我想过这个问题,几个小时以上,并决定以不同的方式接近它,因为我是在一个死胡同漂亮多了。我在想如果我不能定位一个相对的div,也许我可以自动分配hrefid的值,这样每个链接就可以通过它的id进行定位。

这实际上摸索出精美且符合我的所有要求:

$('.more-info a').each(function(index){ 
    var x = index + 1; 
    $(this).attr('href', '#box' + x); 
    var li = $(this).parent().parent(); 
    $('.help', li).attr('id', 'box' + x); 
}).fancybox(); 
  1. $('.more-info a').each(function(index){我指定我通过他们的各个环节和循环。
  2. var x = index + 1;指数从0开始,但为便于阅读,我先干为1
  3. $(this).attr('href', '#box' + x);我取当前链接的href值(目前#),并与#box[INDEX],其中指数是一个独特的,自动递增的数字替换。
  4. var li = $(this).parent().parent();我移回一个视图元素,这样我就可以磨合我的隐藏div .help
  5. $('.help', li).attr('id', 'box' + x);我现在的目标是.help div并添加一个名为id的属性并将其设置为box[INDEX]。我现在有了链接和隐藏div之间的必要联系,以便fancybox可以发挥它的魔力。
  6. }).fancybox();这让fancybox知道打开我的链接。使用

jQuery函数: .each().attr().parent()

任何建议或改进仍然理解。

-Ryan