单击“获取子元素”

时间:2013-08-20 08:13:17

标签: javascript jquery html css

好的,所以这是我的问题(一定很简单,但我仍然无法想出这个问题)......

我有一个示例HTML代码,如下所示:

<!-- New Website #1 -->
<!DOCTYPE html>
<html style='min-height:0px;'>
    <head>
        <title>Page Title</title>

        <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1">

        <link rel="stylesheet" href="jquery.mobile.min.css" />
        <link rel="stylesheet" href="custom.css" />
        <link rel="stylesheet" href="dev.css" />


    </head>

    <body id="jqm-website-6926" class=""  >


        <!-- New Page #1 -->
        <div data-role="page" comp-id="jqm-page-6271" id="jqm-page-6271" class="" data-add-back-btn="false" data-back-btn-text="" data-back-btn-theme="" data-dom-cache="false" data-theme="" data-title="" >

            <!-- New Header #1 -->
            <div data-role="header" comp-id="jqm-header-364" id="jqm-header-364" class="" data-position="" data-fullscreen="false" data-theme="" >
                <h1></h1>
            </div>
            <!-- / New Header #1 -->

            <!-- New Content #1 -->
            <div data-role="content" comp-id="jqm-content-3537" id="jqm-content-3537" class="" data-theme=""  >

                <!-- New Button #1 -->
                <div comp-id="jqm-button-1547" >
                    <a data-role="button" id="jqm-button-1547" class="" data-corners="true" data-icon="" data-iconpos="left" data-iconshadow="true" data-inline="false" data-mini="false" data-shadow="true" data-theme=""  href="#" data-transition="(null)">

                    </a>
                </div>
                <!-- / New Button #1 -->
            </div>
            <!-- / New Content #1 -->
        </div>
        <!-- / New Page #1 -->

        <!-- New Page #1 -->
        <div data-role="page" comp-id="jqm-page-9207" id="jqm-page-9207" class="" data-add-back-btn="false" data-back-btn-text="" data-back-btn-theme="" data-dom-cache="false" data-theme="" data-title="" >

        </div>
        <!-- / New Page #1 -->


        <script src="jquery.min.js"></script>
        <script src="jquery.mobile.min.js"></script>
        <script src="custom.js"></script>
        <script src="dev.js"></script>

    </body>
</html>
<!-- / New Website #1 -->

我想要做的就是点击一个设置了comp-id属性的特定元素 - 我们突出显示(通过添加msp-selected类)只是特定的元件。

然而,这不起作用......

这就是我尝试过的:

function removeAll()
{
    $("[comp-id]").each(function() {
        if ($(this)!==undefined) {
            $(this).removeClass("msp-selected");
        }
    });
}

$(document).ready( function() {
    $('[comp-id]:not(.msp-selected)').on('click', function(e) {
        removeAll();

        $(this).addClass('msp-selected');
    });
});

但问题是:

  • 点击按钮(comp-id="jqm-button-1547"
  • 它突出显示:a)首先按钮,b)然后jqm-content-3537,c)然后jqm-page-6271
  • 简而言之,最后,“页面”会突出显示,而不是按钮。

有什么想法吗?


这是一个小提琴: http://jsfiddle.net/CTZD3/

1 个答案:

答案 0 :(得分:4)

也许您可以使用event.stopPropagation();

将事件传播到父元素
$(document).ready( function() {
    $('[comp-id]:not(.msp-selected)').on('click', function(e) {
        removeAll();
        e.stopPropagation();
        $(this).addClass('msp-selected');
    });
});