JQuery on('click') 不适用于地图区域
JQuery on('click') doesn't work with map area
我正在用 .html()
编写一些代码,其中有一个 html map area
(这是我 enable/disable 地图区域的解决方法)
我可以处理任何实时事件(单击图像即可处理),但不适用于地图区域。我找不到任何关于此的提示,我研究并测试了几种方法但没有结果。
我的变量 html:
var mapImage = '<map name="image-map"><area target="" href="#" alt="" title="" id="s" coords="55,109,130,220" shape="rect"><area target="" href="#" alt="" title="" id="b" coords="135,108,205,222" shape="rect"><area href="#" target="" alt="" title="" id="w" coords="213,109,296,223" shape="rect"><area href="#" target="" alt="" title="" id="n" coords="303,91,387,225" shape="rect"><area href="#" target="" alt="" title="" id="r" coords="58,223,131,323" shape="rect"><area href="#" target="" alt="" title="" id="l" coords="133,224,210,322" shape="rect"><area href="#" target="" alt="" title="" id="t" coords="215,225,293,324" shape="rect"><area href="#" target="" alt="" title="" id="g" coords="303,229,387,324" shape="rect"><area href="#" target="" alt="" title="" id="p" coords="540,96,686,217" shape="rect"><area href="#" target="" alt="" title="" id="b" coords="515,229,583,320" shape="rect"><area href="#" target="" alt="" title="" id="k" coords="594,225,679,322" shape="rect"><area href="#" target="" alt="" title="" id="x" coords="7,350,4,298,50,304,52,326,392,327,391,301,508,300,509,323,685,325,684,299,735,299,757,291,756,354" shape="poly"></map>';
var mainImage = '<img id="panel" src="imgs/main1.png" width="760" height="360" class="img-responsive img-thumbnail" alt="Responsive image" usemap="#image-map">';
我最后一次尝试活动(在这里提醒一下基础知识):
$("#b").on('click', function (e) {
e.preventDefault();
alert('test');
});
没有用,但这是我用来编写 html:
首次出现的代码
$("#panel").on('click', function () {
switch (panel) {
case 0:
$("#maindiv").html(mainImage + mapImage).promise().done(function () {
$('#panel').attr("src", "imgs/day_off.png");
panel = 1;
});;
break;
}
});
当然 dom 里面的所有内容(文档准备就绪)。
我的错误在哪里?任何提示或评论或答案将不胜感激。在最新的 Mozilla 和最新的 Chrome 中进行测试。如果我不动态地写 html 它会起作用。
为尚不存在的元素设置页面加载时的点击绑定将不起作用。它实际上不会注册任何东西,因为该元素不存在!
您将需要在页面加载时确实存在的元素上注册一个事件处理程序,并且谁是动态创建的元素的父元素。
请参阅 format/how 的答案:
如果#panel 在页面加载时存在并且包含#b 元素,那么建议的解决方案:
$("#panel").on('click', '#b', function (e) {
e.preventDefault();
alert('test');
});
我正在用 .html()
编写一些代码,其中有一个 html map area
(这是我 enable/disable 地图区域的解决方法)
我可以处理任何实时事件(单击图像即可处理),但不适用于地图区域。我找不到任何关于此的提示,我研究并测试了几种方法但没有结果。
我的变量 html:
var mapImage = '<map name="image-map"><area target="" href="#" alt="" title="" id="s" coords="55,109,130,220" shape="rect"><area target="" href="#" alt="" title="" id="b" coords="135,108,205,222" shape="rect"><area href="#" target="" alt="" title="" id="w" coords="213,109,296,223" shape="rect"><area href="#" target="" alt="" title="" id="n" coords="303,91,387,225" shape="rect"><area href="#" target="" alt="" title="" id="r" coords="58,223,131,323" shape="rect"><area href="#" target="" alt="" title="" id="l" coords="133,224,210,322" shape="rect"><area href="#" target="" alt="" title="" id="t" coords="215,225,293,324" shape="rect"><area href="#" target="" alt="" title="" id="g" coords="303,229,387,324" shape="rect"><area href="#" target="" alt="" title="" id="p" coords="540,96,686,217" shape="rect"><area href="#" target="" alt="" title="" id="b" coords="515,229,583,320" shape="rect"><area href="#" target="" alt="" title="" id="k" coords="594,225,679,322" shape="rect"><area href="#" target="" alt="" title="" id="x" coords="7,350,4,298,50,304,52,326,392,327,391,301,508,300,509,323,685,325,684,299,735,299,757,291,756,354" shape="poly"></map>';
var mainImage = '<img id="panel" src="imgs/main1.png" width="760" height="360" class="img-responsive img-thumbnail" alt="Responsive image" usemap="#image-map">';
我最后一次尝试活动(在这里提醒一下基础知识):
$("#b").on('click', function (e) {
e.preventDefault();
alert('test');
});
没有用,但这是我用来编写 html:
首次出现的代码 $("#panel").on('click', function () {
switch (panel) {
case 0:
$("#maindiv").html(mainImage + mapImage).promise().done(function () {
$('#panel').attr("src", "imgs/day_off.png");
panel = 1;
});;
break;
}
});
当然 dom 里面的所有内容(文档准备就绪)。
我的错误在哪里?任何提示或评论或答案将不胜感激。在最新的 Mozilla 和最新的 Chrome 中进行测试。如果我不动态地写 html 它会起作用。
为尚不存在的元素设置页面加载时的点击绑定将不起作用。它实际上不会注册任何东西,因为该元素不存在!
您将需要在页面加载时确实存在的元素上注册一个事件处理程序,并且谁是动态创建的元素的父元素。
请参阅 format/how 的答案:
如果#panel 在页面加载时存在并且包含#b 元素,那么建议的解决方案:
$("#panel").on('click', '#b', function (e) {
e.preventDefault();
alert('test');
});