2

我正在动态创建一个可折叠的集合。像下面

div = '<div data-role="collapsible" data-inset="false" data-iconpos="right" data-collapsible="true" data-collapsed-icon="arrow-r" data-expanded-icon="arrow-d"><h3>'+
 row1["name"]+'<span class="ui-li-count ui-btn-up-c ui-btn-corner-all" data-iconpos="right">'+count+'</span></h3></div>';

现在我需要为每个可折叠集添加一个按钮,单击按钮后我需要获取可折叠元素内容,但可折叠列表不应展开。

我怎样才能做到这一点?

谢谢:)

4

1 回答 1

6

例子

工作示例:http: //jsfiddle.net/Gajotres/z3hsb/

描述

这里需要了解的是如何使用:

e.stopPropagation();
e.stopImmediatePropagation();    

您当前的问题是单击事件正在通过按钮传播并点击可折叠,从而打开/关闭它。如果使用了stopPropagation()stopImmediatePropagation()函数,则可以防止这种情况发生。

代码

HTML:

<!DOCTYPE html>
<html>
<head>
    <title>jQM Complex Demo</title>
    <meta name="viewport" content="width=device-width"/>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
    <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>    
</head>
<body>
    <div data-role="page" id="index">
        <div data-theme="a" data-role="header">
            <h3>
                First Page
            </h3>
            <a href="#second" class="ui-btn-right">Next</a>
        </div>

        <div data-role="content">
            <div id="List" data-role="collapsible-set" data-theme="b" data-content-theme="d">
                <div id='ListItem' data-role='collapsible' data-content-theme='b' data-collapsed='true'>
                    <h3><p>Title</p>
                        <div id="button-set">
                            <input type='button'  data-theme='b' value='Settings' data-mini='true' data-inline='true' data-icon='gear' data-icon-pos='top' id="show-content"/>
                        </div>
                    </h3>
                    <p>CONTENT</p>
                </div>
            </div>
        </div>

        <div data-theme="a" data-role="footer" data-position="fixed">

        </div>
    </div>    
</body>
</html>   

Javascript:

$(document).on('pagebeforeshow', '#index', function(){    
    $('#show-content').on('click', function(e) {       
        alert($('#ListItem').find('h3 p').text());       
        e.stopPropagation();
        e.stopImmediatePropagation();          
    });    
});

CSS:

#button-set {
    float:right;
    margin-top: -20px;
}
于 2013-05-27T11:48:45.623 回答