【发布时间】:2013-02-26 16:08:19
【问题描述】:
是否可以只让 div 的一部分可点击——比如 clickmap/imagemap?可以用 jQuery 吗? 提示:我不想编辑 html(带有 200 个单独 html 文件的滥用模板)。
【问题讨论】:
-
这很有可能——看第一个例子:w3schools.com/tags/tag_map.asp
标签: jquery html map area clickable
是否可以只让 div 的一部分可点击——比如 clickmap/imagemap?可以用 jQuery 吗? 提示:我不想编辑 html(带有 200 个单独 html 文件的滥用模板)。
【问题讨论】:
标签: jquery html map area clickable
当你的 div 被点击时,事件处理程序会接收到该事件,所以你可以测试点击的位置。
如果需要,您可能希望使用被点击的元素位置和大小,使用$(this).offset()、$(this).width() 和$(this).height()。例如:
$('mydivselector').click(function(e) {
if (e.pageY > $(this).offset().top + 0.5*$(this).height()) {
// bottom was clicked
} else {
// up of the div was clicked
}
});
如果您想阻止默认操作和事件传播,请从事件处理程序返回 false。
【讨论】:
您可以尝试为所有元素制作一个 jQuery 选择器,并对一些元素进行切片
var selector = "#mydiv";
var numberOfElements = $(selector).find('*').length/2; //It's just an example
$(selector).find('*').slice(0, numberOfElements).click(function() {
[....]//do stuff
});
【讨论】:
您可能需要使整个 div 可点击,然后通过检查点击了哪些坐标来确定您是否愿意处理该事件。
【讨论】:
您可以检查event object 上的offsetX 和offsetY 属性的值,如果您不喜欢它们,就决定什么都不做。
或者,如果您需要完全不触发 click 事件,您可以动态创建额外的透明 <div>s 并将它们部分放置在现有元素的前面,以便它们遮挡部分您不想响应点击。
【讨论】: