简体   繁体   English

获取子元素被点击

[英]Get Child Element being clicked

OK, so here's my issue (it must be simple, but I still cannot figure this one out)... 好,所以这是我的问题(必须很简单,但是我仍然无法弄清楚这一点)...

I've got a sample HTML code like the one below : 我有一个示例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 -->

All I want to do is when a specific element, with the comp-id attribute set, is clicked - we highlight (by adding the msp-selected class) just that specific element. 所有我想要做的是一个特定的元素,与当comp-id属性集,被点击-我们强调(通过加入msp-selected类) 只是特定元素。

However, this is not working... 但是,这不起作用...

This is what I've tried : 这是我尝试过的:

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');
    });
});

However, here's the problem : 但是,这是问题所在:

  • When clicking on the button ( comp-id="jqm-button-1547" ) 单击按钮时( comp-id="jqm-button-1547"
  • It highlights : a) first the button, b) then jqm-content-3537 , c) then jqm-page-6271 它突出显示:a)首先是按钮,b)然后是jqm-content-3537 ,c)然后是jqm-page-6271
  • In a few words, in the end, the 'page' is highlighted, instead of the button. 简而言之,最后高亮显示“页面”,而不是按钮。

Any ideas? 有任何想法吗?


And here's a fiddle : http://jsfiddle.net/CTZD3/ 这是一个小提琴: http : //jsfiddle.net/CTZD3/

Maybe you can stop the event to be propagated to parents elements with event.stopPropagation(); 也许您可以使用event.stopPropagation();停止将事件传播到父元素event.stopPropagation();

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM