将当前类添加到li时出错

时间:2017-04-17 13:33:39

标签: jquery html

我正在尝试将当前类添加到导航标签的li。以下是我的代码

<nav class="tabs-nav quickset-tabs">
    <ul class="hidden" data-bind="css: { hidden: false }, foreach: currentTab().subMenus">
        <li class="" data-bind="visible: visible"><a data-bind="click: $parent.openTab, text: title"></a></li>
    </ul>
</nav>

jQuery代码如下

 <script type="text/javascript">
    $('ul li a').click(function() {
        $('ul li.current').removeClass('current');
        $(this).closest('li').addClass('current');
    });

</script>

我无法找到为什么不将current类添加到li标记。

2 个答案:

答案 0 :(得分:1)

问题是点击处理程序是在页面加载时添加的,并且动态添加的任何current元素都不会应用它。请参阅下面的代码,了解将点击处理程序应用于新添加的元素的工作解决方案。 (出于演示目的,将突出显示具有$('ul li a').click(function() { $('ul li.current').removeClass('current'); $(this).closest('li').addClass('current'); }); var list = document.getElementsByTagName('ul')[0]; function addAnchor() { // add another anchor element list.innerHTML = $('ul').html() + '<li class="" data-bind="visible: visible"><a data-bind=" click: $parent.openTab, text: title">Anchor</a>List item</li>'; $('ul li a').unbind(); $('ul li a').click(function() { $('ul li.current').removeClass('current'); $(this).closest('li').addClass('current'); }); }类的任何元素。)单击锚点将类应用于列表项。

&#13;
&#13;
a {
  border: 1px solid red;
  padding: 2px;
  margin: 3px;
  border-radius: 10px;
}

li {
  border: 1px solid black;
  border-radius: 10px;
  padding: 5px;
  margin: 2px;
}

.current {
  background-color: yellow;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav class="tabs-nav quickset-tabs">
                <ul class="hidden" data-bind="css: { hidden: false }, foreach: currentTab().subMenus">
                    <li class="" data-bind="visible: visible"><a data-bind="    click: $parent.openTab, text: title">Anchor</a>List item</li>
                </ul>
                </nav>
                
<button onclick="addAnchor();">Add An Anchor</button>
&#13;
a
&#13;
&#13;
&#13;

这是将点击处理程序添加到每个新 $('ul li a').unbind(); $('ul li a').click(function() { $('ul li.current').removeClass('current'); $(this).closest('li').addClass('current'); }); 元素的代码的相关部分:

a=[0,0,2,4,4,6,6,9,12,13,13,16,16,21,21,24,26,26,28,28,31,34,34,37,37]

答案 1 :(得分:0)

我已经创建了一个函数,并在按钮上调用它,它工作正常。以下是代码

my $dbh= DBI ->connect("DBI:Oracle:$ENV{'FACTORY_' . $db . '_DB_NAME'}", $db_user, $db_password, {PrintError => 0 });
if ($DBI::err)
{
    print "Error to connect database : $DBI::err \n";

}