JQuery图像单击事件不起作用
JQuery image click event is not working
我想触发一个JQuery事件,当在我的页面上单击图像时,该事件会显示一个文本框。我的页面的HTML代码是:
<body>
<div id="left_box">
<ul id="thumbnails">
<li>
<div class="photocontainer" width="100%">
<img class="photo" id="website1" src="photo1.jpg" alt="Click to see enlarged image" />
</div>
</li>
<li>
<div class="photocontainer">
<img class="photo" id="website2" src="photo2.jpg" alt="Click to see enlarged image" />
</div>
</li>
</ul>
</div>
现在,我已经编写了JQuery代码,以便在用户单击id="website2"的图像时显示警报。代码为:
<script language="JavaScript" type="text/javascript" src="/marketplaces/js/jquery-1.2.6.min.js">
$('#website2').on("click","img,div", function (e) {
e.preventDefault();
alert('You Clicked Me');
});
</script>
然而,图像点击事件不会发生任何事情。有人能告诉我哪里出了问题吗?
提前谢谢。
试试这个javascript代码:
$(document).ready(function () {
$(".photo#website2").click(function () {
alert("This image has been clicked!");
});
})
另外,将JQuery库的导入与代码分离。
首先,您需要关闭顶部标记,并将其他javascript放在自己的块中。
然后,你可以通过选择里面的所有图像,而不是选择#website2元素
$(document).on("click", ".photocontainer img", function(e) {
而不是您的选择器。当然,有各种方法可以做到这一点,但基本上,您希望将侦听器附加到文档,第二个参数是选择器。
这里有一个小提琴来向您展示我在实际操作中的意思,当然还可以阅读jQueryon()文档。
您只在#website2 上添加事件
$("body").on("click", ".photo", function(e) {
e.preventDefault();
alert("You clicked me");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<div id="left_box">
<ul id="thumbnails">
<li>
<div class="photocontainer" width="100%">
<img class="photo" id="website1" src="photo1.jpg" alt="Click to see enlarged image" />
</div>
</li>
<li>
<div class="photocontainer">
<img class="photo" id="website2" src="photo2.jpg" alt="Click to see enlarged image" />
</div>
</li>
</ul>
</div>
</body>
在获取jQuery的<script>
标记中不能有jQuery脚本。
根据SO的回答:
不同的浏览器对此有不同的处理方式。有些只在包含src时才运行内容,而不会出现错误。有些人在尝试包含src脚本后运行它,不管成功与否。由于这种行为是不可靠的(并且在HTML5中被禁止),因此应该避免。
显然,它不可靠,在你的浏览器上不起作用。
此外,您还可以使用jQuery内置的更简单的click()
事件处理程序:
$("#website2").click(function() {
// code here
});
请参阅JSFiddle.net上的工作示例。
如果您希望使用id="website2"
进行alert()
,则:
$("#website2").on("click",function()
{
alert();
});
如果您希望使用任何以id="website"
开头的图像alert()
,则
$("[id^=website]").on("click",function()
{
alert();
});
您不需要e.preventDefault()
,因为点击图片既不会发布表单也不会重新加载页面。此外,您不需要将click事件附加到div
,因为它们只是img
元素的容器。
带有src的第一个脚本应该与代码为的脚本分开
<script type="text/javascript" src="/marketplaces/js/jquery-1.2.6.min.js"></script>
<script>
// your js code here
</script>
第二次更改
$('#website2').on("click","img,div", function (e) {
带有
$('body').on("click","#website2", function (e) { // if you dynamically append your elements
// if not just use
$("#website2").on('click',function(){
// code here
});
无需使用e.preventDefault()。。您使用它来防止页面重新加载
对于全代码
<script type="text/javascript" src="/marketplaces/js/jquery-1.2.6.min.js"></script>
<script>
$(document).ready(function(){
$(".photocontainer img.photo").on('click',function(){
// code here
alert($(this).attr('src'));
});
});
</script>
并确保您已经在/marketplaces/js/文件夹中拥有jquery-1.2.6.min.js文件
- JsFiddle上的鼠标事件不起作用
- 在IE8中不起作用的元素上触发单击事件
- 链接上的IE10 jquery句柄单击事件不起作用
- Javascript点击事件回调不起作用
- jQuery加载完成事件不起作用
- 覆盖单击事件不起作用
- 鼠标事件在OpenLaszlo应用程序中不起作用
- 单击事件不起作用
- 插入后单击锚点标记上的事件after不起作用
- 为什么body元素上的onclick事件不起作用
- 追加Jquery后的Binding Click事件不起作用
- chrome中的onmouseover(下拉选项标记)事件不起作用-php,javascript
- 添加事件侦听器不起作用
- onclick事件在asp.net上不起作用
- jQuery调用keyup事件不起作用
- 单击事件在jquery easyui多选项卡中不起作用
- jQuery ContextMenu事件在IOS 8.2中不起作用
- 第二个事件[onClick]不起作用
- 按键事件上的简单HTML输入不起作用
- Keyup事件在easyui上不起作用