0

我有两个问题:

1)由于我的html内容结构相似,唯一的区别是类标题内容不同。我尝试使用 $(div .title:contains("cat")) 也 $(div .title).text()="cat")

2)我怎样才能通过检查 $(div a) 内容是必需的来获得手风琴的索引。我尝试使用 $(div a).text()=="cat"

检查这里的代码:

HTML1 内容

    <div class="mod moduleselected" id="mod969">
    <div class="content module moduleselect">
    <div class="hd" ><div class="inner">
    <div class="title">cat</div>
    <ul class="terminallist"></ul>
    <ul class="buttons">
    <li class="help"></li>
    <li class="show" ></li>
    </ul>
    </div>
    </div>
    </div>

    <div class="mod moduleselected" id="mod969">
    <div class="content module moduleselect">
    <div class="hd" ><div class="inner">
    <div class="title">rat</div>
    <ul class="terminallist"></ul>
    <ul class="buttons">
    <li class="help"></li>
    <li class="show" ></li>
    </ul>
    </div>
    </div>
    </div>

<div class="mod moduleselected" id="mod969">
    <div class="content module moduleselect">
    <div class="hd" ><div class="inner">
    <div class="title">dog</div>
    <ul class="terminallist"></ul>
    <ul class="buttons">
    <li class="help"></li>
    <li class="show" ></li>
    </ul>
    </div>
    </div>
    </div>

手风琴

        <div id="dia">
        <div id="dialog" title="Detailed FeedBack ">
        <div id="accordion">
        <h3><a href="#">dog</a></h3>
        <h3><a href="#">cat</a></h3>
        <h3><a href="#">rat</a></h3>
        </div>
        </div>
        </div>

Javascript

        $('div .title').mouseover(function() {
    if($("div a").text().indexOf("cat")!=-1)
    {
    $("#accordion").accordion("activate", 1);
    }
    $('div .title').mouseleave(function(){$("#accordion").accordion("activate", -1); });
        });

这是我试图用这个 javascript 代码做的事情。当我将鼠标悬停在猫内容上时,我希望打开带有猫内容的手风琴。当我离开它关闭手风琴选择时。

当我将鼠标悬停在 html 内容 cat ,rat 上时。它应该并排打开这些内容的手风琴按钮。示例:我将鼠标悬停在老鼠(html 内容)上,我应该看到手风琴老鼠打开(或活动,即内容可见)。

4

2 回答 2

1

更新(见演示)

听起来你想要这样的东西:当一个内容部分悬停时,找到该部分的标题,将其文本与<a>手风琴中元素的文本匹配,然后激活该部分:

$(function() {
    $("#accordion").accordion();

    var links = $('#accordion a').map(function() {
        return $(this).text().trim().toLowerCase();
    }).toArray();

    $('div.content').mouseover(function() {
        var title = $(this).find('div.title').text().toLowerCase();
        var index = links.indexOf(title);
        if (index != -1) {
            $("#accordion").accordion("activate", index);
        }
    });
});​

PS jQuery 也有这样的.hover()方法。

于 2012-08-01T06:16:14.707 回答
1

它应该像以下那样简洁(可能会有一些细微的调整):

$('.content .title').hover(function(e){
    var index = this.textContent.split(/\W/)[1] - 1;    
    $("#accordion").accordion('activate', index);
});
​

小心 HTML,因为这个正则表达式过于简单,因为它只抓取最后一个“单词”,在您的示例中是一个数字。我们减一得到一个从零开始的索引。如果您向元素添加更多文本,那将会中断。

见:http: //jsfiddle.net/35yGV/

于 2012-08-01T13:56:01.933 回答