jquery onclick hide根本不工作,我哪里错了

时间:2014-03-11 06:31:45

标签: javascript jquery html jquery-ui

我有一个无序列表,其列表项有表。这些列表项是可拖动和可排序的。我正在点击时隐藏列表元素。我有一个jquery代码,但它似乎不起作用。请帮我解决这个问题。 html代码是:

<ul class="sortable">
            <li class="list" id="first">1</li>
            <li class="list" id="second">2</li>
            <li class="list" id="third">3</li>
            <li class="list" id="fourth">4</li>
            <li class="list" id="fifth">5</li>
            <li class="list" id="sixth">6</li>
            <li class="list" id="seventh">7</li>
            <li class="list" id="eighth">8</li>
            <li class="list" id="ninth">9</li>
            <li class="list" id="tenth">10</li>

        </ul>

使用的jquery是:

<script type="text/javascript">
        $(function(){
            $( ".sortable" ).sortable();
            $( ".sortable" ).disableSelection();
        });

        //ONCLICK CLOSE

        $(".list").click(function() {
            var tblId=$(this).attr("id");
            alert(tblId);
            $("#"+tblId).hide();
        });
</script>

我使用过一些,我不确定这些链接是否会成为功能障碍。页面中的链接是:

<!--script src="js/jQuery.min.js" type="text/javascript"></script-->
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<!--script src="js/jquery-ui.js" type="text/javascript"></script-->
<link rel="stylesheet" type="text/css" href="css/jquery.contextmenu.css" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
<link rel="stylesheet" type="text/css" href="css/menu.css" />
<link rel="stylesheet" type="text/css" href="css/bootstrap.css" />
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" />
<link rel="stylesheet" type="text/css" href="css/bootstrap-theme.css" />
<link rel="stylesheet" type="text/css" href="css/bootstrap-theme.min.css" />
<script src="js/jquery.contextmenu.js"></script>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />

3 个答案:

答案 0 :(得分:6)

您需要将代码包装在document.ready

 $(document).ready(function(){
 $(".list").click(function() {
        var tblId=$(this).attr("id");
        alert(tblId);
        $("#"+tblId).hide();
    });
});

答案 1 :(得分:4)

您需要将您的click函数包装在DOM ready handler中。

$(function () {
    $(".sortable").sortable();
    $(".sortable").disableSelection();

    $(".list").click(function () {
        var tblId = $(this).attr("id");
        alert(tblId);
        $("#" + tblId).hide();
    });
});

目前,只有代码的第一个区块位于$(function() {...});

此外,您只需要包含一次jQuery,这样就可以删除:

<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>

并将jquery.contextmenu.js移至jQuery UI脚本下方

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>  
<script src="js/jquery.contextmenu.js"></script>

答案 2 :(得分:1)

正如其他答案所示,将其移到dom ready handler

jQuery(function ($) {
    $(".sortable").sortable();
    $(".sortable").disableSelection();

    //move it inside the dom ready handler
    //also there is no need to fetch the id of the element, you can pass the dom element reference directly to jQuery
    $(".list").click(function () {
        $(this).hide();
    });
});