0

我的错误示​​例代码

正如您在上面的示例中所看到的,在“Disclaimer Question111”旁边,有一个展开/合同链接。该脚本中途工作,因为发生了文本更改,但它不会更改其锚定到的 div 的显示 css。

知道为什么吗?我没有看到任何页面错误。

触发此操作的代码在我的 site.js 文件中,但我将其拉到此处以便您可以看到:

    $('.accordion-trigger-settings').click(function(){
var target=$(this).attr('href');
if($(target).css('display')=='none')
{
$(target).show();
$(this).text('Collapse Settings');
}
else
{
$(target).hide();
$(this).text('Expand Settings');
}
return false;
});

它适用于这个块:

<a href="#accordion-season5160" class="accordion-trigger-settings">Expand View</a>
                                <div class="padding5"></div> 
                                <div class="accordionContent" id="accordion-season5160">
                                    <textarea  name="str_disclaimer_header5160" id="str_disclaimer_header5160"></textarea>
                                </div>      
4

2 回答 2

3

使用 Chrome 网络检查器,我看到您有两个带有 id 的元素accordion-season5160。因此,文本正在更改,因为它适用于this但该show()方法正在修改(显示/隐藏)具有 id 的第一个元素accordion-season5160

确保 id 是唯一的。

看图!

在此处输入图像描述

希望能帮助到你!

于 2013-04-30T00:05:25.433 回答
1

实际上,您<div id="accordion-season5160"...>在页面上有两个。其中之一是隐藏的(在 hidden 内<div class="hide_div">)。您可以使用控制台找到它们:

document.querySelectorAll('#accordion-season5160')

你会看到他们两个。要查看元素,您可以在控制台中右键单击它,然后单击“在元素面板中显示”(在 Chrome 中)

解决这个问题的最好方法是让ids 独一无二。但是,您可以尝试一种快速的方法来解决不需要ids 唯一性的问题:

代替

var target=$(this).attr('href');

var target=this.nextElementSibling.nextElementSibling;

JS斌http://jsbin.com/itucop/1/edit

于 2013-04-30T00:27:04.330 回答