如何将点击事件绑定到对象标记
How to bind click event to object tag?
我有这个代码
<object data="images/logo.svg" type="image/svg+xml" class="icon-logo"></object>
和jquery
$(".icon-logo").click(function() {
.....
});
但我无法点击事件。
实现此目标的最简单方法是将对象标记封装在div中,将click监听器绑定到div,并将pointer-events: none
添加到对象标记的样式中。
样品小提琴:
.clickable {
background: red;
width: 100px;
height: 100px;
border-radius: 100px;
overflow: hidden;
}
object {
width: 100%;
pointer-events: none;
}
<div class='clickable' onclick='alert("WOW")'>
<object type='image/svg+xml' data='https://douglasduhaime.com/assets/images/icons/home.svg' />
</div>
1。问题:事件处理
关于jQuery部分,请尝试使用事件委派。
来自文档:
.on()方法将事件处理程序附加到当前选定的集合jQuery对象中元素的。
$(document).on('click', '.icon-logo', function(event) {
document.write('Event type: ' + event.type);
document.write('<br>CSS-Class: ');
document.write($(this).attr('class'));
});
// As said in the docs, you can attach multiple events to multiple selectors.
// A typical example of use may be:
// $(document).on('change blur', '.icon-logo .some-other-class', function() {...}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<object data="images/logo.svg" type="image/svg+xml" class="icon-logo" style="cursor: pointer;">Click me!</object>
在@Kaiido的评论后编辑:
2.问题:<object>
元素无法点击
一种可能性是根本不使用<object>
,而是使用<img>
标签,如SO回答中所建议的:使html svg对象也成为可点击的链接。
2.问题:空HTML标记
这种标签<object>
需要一些内容才能显示在页面上。
您的标签:
<object data="images/logo.svg" type="image/svg+xml" class="icon-logo"></object>
没有任何内部HTML内容,因此您将无法单击它。
相关文章:
- 值未与数组对象绑定
- Angular:将函数从子对象绑定到父对象
- 将 .on 事件与对象绑定
- 挖空选项对象绑定
- 对象绑定模式的rest属性应该是最后一个
- Knockout.js用单个json对象绑定一个可观察对象
- angular.js将jquery自动完成对象绑定到ng模型,将值输入到对象的属性
- Knockout:为许多数据对象绑定模板引导模式
- JavaScript 对象绑定
- 使用javascript将JSON对象绑定到asp.net gridview控件
- 如何将复杂对象绑定到剑道调度程序中的字段
- D3:如何有条件地将 SVG 对象绑定到数据
- Ko_selectize数组对象绑定未定义
- 在选择框中从任意 JavaScript 对象绑定选项值和选项文本
- 使用 jQuery 将对象绑定到一行
- 如何将当前对象绑定到文本输入
- AngularJS将javascript对象绑定到指令属性
- 子属性更改时重新评估对象绑定
- 将Angular Service对象绑定到控制器作用域并更新
- 将模型对象绑定到JavaScript数组时出现语法错误