创建事件处理程序时,从其他元素获取值
Get value from a different element when creating an event handler
我在页面上列出了一系列HIDDEN contactID元素,并为附近的锚点分配了一个事件处理程序(单击锚点会弹出联系人的配置文件)。我希望在创建事件处理程序时能够传入HIDDEN元素的值(锚点可能不在HIDDEN元件旁边,所以我不想遍历DOM)。
<input type="hidden" name="first-contact" id="first-contact" value="1" />
<.. code ..>
<a href="#" class="contact-viewer">View contact</a>
<input type="hidden" name="second-contact" id="second-contact" value="4" />
<.. code ..>
<a href="#" class="contact-viewer">View contact</a>
我目前的做法是将HIDDEN元素的ID标记放在锚点的REL属性中,并在运行事件时获取REL值。
<a href="#" class="contact-viewer" rel="second-contact">View contact</a>
这工作得很好,但感觉不太好(我觉得使用REL是一种黑客行为)。有更好的方法吗?
这里的常用策略是为链接赋予href属性,这样,如果客户端上的脚本不可用或失败,服务器就可以完成请求。在这种情况下,所需的值可以在href属性中。
如果脚本可用,请从href获取值,取消导航并使用XHR或其他方法完成请求。
如果您不想将链接用作链接,请使用按钮。链接推断导航到另一个页面,按钮推断将停留在同一页面上的进程。
理想的方法是通过将HTML元素分组在一起(例如封装在<div>
中)来指定关系,然后使用父/子DOM遍历。
然而,如果不能做到这一点,那么你所采取的方法是好的。您提到的唯一问题是rel
属性的使用。使用HTML5,您可以为此目的使用data-
属性:
<a href="#" class="contact-viewer" data-contact="first-contact">View contact</a>
您可以使用在事件处理程序中检索该值
el.getAttribute('data-contact');
请在此处查看有关自定义数据属性的详细信息。
相关文章:
- 如何在不影响其他元素的情况下扩展DIV
- 单击其他元素时,我如何使用 jQuery 忽略更改事件
- 从其他元素上的单击事件访问image src属性
- 单击其他元素或鼠标向上时隐藏输入框,但保留一次焦点
- 将一个元素放在具有相同z索引的其他元素前面
- 将href中的图像替换为其他元素中的图像
- JavaScript删除所有其他元素
- 如何在 *ngFor 列表中显示单击的元素,使用 Angular 2 隐藏其他元素
- 单击更改其他元素源
- JavaScript (w/jQuery) - 当被其他元素包围时,在悬停时增长一个元素以填充容器
- 如何使用可调整大小的元素重叠其他元素
- 如果所有其他元素都填写在AngularJS中,如何动态添加新的输入元素
- 更改包含其他元素的元素的文本
- 将静态标头置于所有其他元素之上
- jQuery或JavaScript获取靠近其他元素的元素
- 从中删除元素'的父元素,并将其附加到其他元素
- 获取更改跨度的值,使其显示为其他元素
- jQuery don'当元素被其他元素检索时,它不能正常工作
- 具有固定元素并填充有其他元素的页面
- Jquery索引与其他元素的关系