Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 跟踪父对象_Jquery_Css Selectors - Fatal编程技术网

Jquery 跟踪父对象

Jquery 跟踪父对象,jquery,css-selectors,Jquery,Css Selectors,各位程序员,下面是我正在研究的结构的一个片段。我有一个项目列表(列表),其中包含一组项目,每个项目都由包装器标识,包装器的id具有该项目唯一的值(id=“123”)。每个项目都有一组子元素,其中一个包含一些操作按钮 <div id="the-list"> <div id="123" class="an-item"> <div></div> <div></div> &l

各位程序员,下面是我正在研究的结构的一个片段。我有一个项目列表(列表),其中包含一组项目,每个项目都由包装器标识,包装器的id具有该项目唯一的值(id=“123”)。每个项目都有一组子元素,其中一个包含一些操作按钮

<div id="the-list">

    <div id="123" class="an-item">
        <div></div>
        <div></div>
        <div id="footer">
            <div id="something"></div>
            <div id="actions">
                <botton id="action-email">email</button>
                <botton id="action-edit">edit</button>
            </div>
        </div>
    </div>

    <div id="124" class="an-item">
        <div></div>
        <div></div>
        <div id="footer">
            <div id="something"></div>
            <div id="actions">
                <botton id="action-email">email</button>
                <botton id="action-edit">edit</button>
            </div>
        </div>

    </div>  

</div>  

电子邮件
编辑
电子邮件
编辑
我正在处理列表(列表)级别的冒泡鼠标点击,这似乎起到了作用。我的问题是能够识别单击了哪个项目的按钮。因此,当点击其中一个电子邮件操作按钮时,我需要知道它是属于第123项还是第124项

有没有办法通过jQuery或更好的设计模式获取父id号


谢谢你不能使用同一个ID两次

为按钮指定单独的ID——在这种情况下,您可以使用ID来标识按钮或类。在这种情况下,您可以使用此代码获取父对象;假设
this
是按钮:
$(this).nexist('.an item').attr('id')


演示:

同一ID不能使用两次

为按钮指定单独的ID——在这种情况下,您可以使用ID来标识按钮或类。在这种情况下,您可以使用此代码获取父对象;假设
this
是按钮:
$(this).nexist('.an item').attr('id')

演示:

首先,示例代码中的“按钮”拼写错误。你应该解决这个问题。:)

其次,正如ThiefMaster所说,您必须为按钮提供唯一的ID。两个元素可以具有相同的
名称
属性,但不能具有相同的
id
属性。这适用于所有元素。如果不需要它们的唯一ID,您可能希望为它们提供类

那么,一旦你做到了。使用列表级别的click事件,可以获得单击按钮的ID,如下所示:

$(function() {
    $('#the-list').click(function(evt) {
        var elemid = $(evt.target).attr('id');
        if (/action-/.test(elemid)) {
            alert('this is an action! Element ID: ' + elemid);
        }
    });
});
这也测试通过对id进行正则表达式检查来确保按钮被按下,以确保它包含“action-”。这只是确保您没有单击其他元素而不是按钮

您可以在操作中看到这一点。

首先,示例代码中的“按钮”拼写错误。你应该解决这个问题。:)

其次,正如ThiefMaster所说,您必须为按钮提供唯一的ID。两个元素可以具有相同的
名称
属性,但不能具有相同的
id
属性。这适用于所有元素。如果不需要它们的唯一ID,您可能希望为它们提供类

那么,一旦你做到了。使用列表级别的click事件,可以获得单击按钮的ID,如下所示:

$(function() {
    $('#the-list').click(function(evt) {
        var elemid = $(evt.target).attr('id');
        if (/action-/.test(elemid)) {
            alert('this is an action! Element ID: ' + elemid);
        }
    });
});
这也测试通过对id进行正则表达式检查来确保按钮被按下,以确保它包含“action-”。这只是确保您没有单击其他元素而不是按钮


你可以在行动中看到这一点。

不错!我打字的时候真的把事情搞砸了。可能会在html6中引入;)至于多重身份证,嗯!没有借口。你的建议和德拉克尔的建议都很有效。我还考虑了一些其他的解决方案:a)从多个ID中清除html后,在我的click事件处理程序中,我可以使用
$(e.target).parents(“.list item”)
获取单击按钮的父级,因为只有一个元素(父级)具有.list类。我忘了parents()将选择器作为参数。或者B)…将s包装在一个div中,并使用一个自定义属性,比如“action on item id”和该项的id值(123)。可以这样检索:
$(e.target).parent().attr(“对项目id的操作”)。不确定哪种解决方案更好。关于自定义属性有什么想法吗?@djtee:如果要使用自定义属性,请使用(即
),然后可以使用jQuery的
.data()
函数来检索它。这也是HTML5兼容的,将允许您的网站通过验证。hmmm,不知道他们被添加到HTML5。在课堂上应该更加注意;)谢谢你的链接。干杯不错!我打字的时候真的把事情搞砸了。可能会在html6中引入;)至于多重身份证,嗯!没有借口。你的建议和德拉克尔的建议都很有效。我还考虑了一些其他的解决方案:a)从多个ID中清除html后,在我的click事件处理程序中,我可以使用
$(e.target).parents(“.list item”)
获取单击按钮的父级,因为只有一个元素(父级)具有.list类。我忘了parents()将选择器作为参数。或者B)…将s包装在一个div中,并使用一个自定义属性,比如“action on item id”和该项的id值(123)。可以这样检索:
$(e.target).parent().attr(“对项目id的操作”)。不确定哪种解决方案更好。关于自定义属性有什么想法吗?@djtee:如果要使用自定义属性,请使用(即
),然后可以使用jQuery的
.data()
函数来检索它。这也是HTML5兼容的,将允许您的网站通过验证。hmmm,不知道他们被添加到HTML5。在课堂上应该更加注意;)谢谢你的链接。干杯