具有相同类的动态元素

时间:2013-10-29 18:24:23

标签: javascript jquery html css

我遇到了一些有关动态创建元素的问题。我正在尝试为我的网站创建一个页面,该页面将显示一个用户列表(已从控制器传递到我的视图中)。对于每个用户我创建了一个div持有者,并且在每个div中我有两个h3标签,同时显示用户的ID和名称。每个用户div还包含一个按钮,允许用户隐藏或显示。

 <div class="single-user" id="@user.Hidden.ToString()">
     <h3>ID: @user.Id</h3>
     <h3>Name: @user.Forename @user.Surname</h3>
     <span><input type="submit" class="sub-btn" /></span>
 </div>

以及'name'和'id'属性我也传递了一个'隐藏的bool属性。这用于检查用户是否已被隐藏。我遇到的问题是因为元素是动态创建的,它们都共享相同的classe和id,所以我无法检查用户是否被隐藏。我在网上找了一个可能的解决方案,然而,它仍然没有用。这是我的javascript代码。

 <script type="text/javascript">

    $('.single-user').on('click', '.sub-btn', function () {
        if ($('.single-user').has('#True')) {
            console.log("true");
        }
        else {
            console.log("false");
        }
    });

 </script>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

<div class="single-user" data-visible="@user.Hidden.ToString()">
     <h3>ID: @user.Id</h3>
     <h3>Name: @user.Forename @user.Surname</h3>
     <span><input type="submit" class="sub-btn" /></span>
 </div>


<script type="text/javascript">

    $(document).on('click', '.sub-btn', function () {
        if ($(this).closest('.single-user').attr('data-visible')=="True") {
            console.log("true");
        }
        else {
            console.log("false");
        }
    });

 </script>