1

我正在动态创建一个列表。我使用 onclick 事件来调用 javascript 并且这有效,我不能做的是从列表中获取选定的项目以具有不同的颜色。

这是代码示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>`enter code here`
    <script src="scripts/jquery.js" type="text/javascript"></script>
    <link href="stylesheets/jquery.mobile.css" rel="stylesheet" type="text/css" />
    <script src="scripts/jquery.mobile.js" type="text/javascript"></script>
    <script>

        $(document).ready(function () {
            var $al = $("#mylist");
            $al.append("<li ><a id='a1' href=\"#\" rel=\"external\" onclick=\"test('selected test 1'); return false\">TEST 1</a></li>");
            $al.append("<li ><a id='a2' href=\"#\" rel=\"external\" onclick=\"test('seleced test 2'); return false\">TEST 2</a></li>");
        });

        function test(text) {
            $("#divtest").html(text);
        } 

        $("#myList li a").click(function () {
                $('#myList li > div').each(function (index) {
                    $(this).removeClass("ui-btn-active");
                });
                var p = $(this).parent();
                $(p).addClass('ui-btn-active');
            });

    </script>
</head>
<body>
    <div data-role="page" id="profile">
        <div data-role="header" data-position="fixed">
        </div>
        <!-- /header -->
        <div data-role="content">
            <ul id="mylist" data-role="listview" data-inset="true">
            </ul>
        </div>
        <div id='divtest'>

        </div>
        <!--/content-->
        <div data-role="footer" data-position="fixed">
        </div>
        <!--/footer-->
    </div>
</body>
</html>
4

3 回答 3

0

为此,您需要从列表项中调用 .addClass 和 .removeClass。根据您想要的颜色,您必须删除/添加某些类。对于初学者,您可以将类 ui-btn-active 添加到项目中。

于 2013-01-15T19:31:20.500 回答
0

您只需将data-theme='a'属性添加到 li 元素并选择所需的模板。

关于这个属性的更多信息:http: //jquerymobile.com/demos/1.2.0/docs/content/content-themes.html

您还需要执行.listview('refresh'); 重新设置列表视图的样式。

这是您的代码中的工作示例:http: //jsfiddle.net/Gajotres/z5Vhm/

这是你的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>`enter code here`
    <link href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" rel="stylesheet" type="text/css" />
    <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js" type="text/javascript"></script>
    <script>

        $(document).ready(function () {
            var $al = $("#mylist");
            $al.append("<li data-theme='a'><a id='a1' href=\"#\" rel=\"external\" onclick=\"test('selected test 1'); return false\">TEST 1</a></li>");
            $al.append("<li data-theme='b'><a id='a2' href=\"#\" rel=\"external\" onclick=\"test('seleced test 2'); return false\" >TEST 2</a></li>");
            $al.listview('refresh');
        });

        function test(text) {
            $("#divtest").html(text);
        } 

    </script>
</head>
<body>
    <div data-role="page" id="profile">
        <div data-role="header" data-position="fixed">
        </div>
        <!-- /header -->
        <div data-role="content">
            <ul id="mylist" data-role="listview" data-inset="true">
            </ul>
        </div>
        <div id='divtest'>

        </div>
        <!--/content-->
        <div data-role="footer" data-position="fixed">
        </div>
        <!--/footer-->
    </div>
</body>
</html>
于 2013-01-15T19:38:04.847 回答
0

您需要找到当前超链接的父 Li 并将背景颜色应用于父级:

$('a').click( function() {
  $(this).parent().css({'background-color' : 'red' });
});

检查这个jsFiddle:http: //jsfiddle.net/p42SX/3/

于 2013-01-15T19:38:33.270 回答