0
 $('.smileys img').click(function () {
            alert("hello");

        });


<div class="smileys">
<img src="images/smileys/mad.gif"/>
</div>

.smileys css 是 display:none;

一个按钮使用这个来显示笑脸: $(".smileys").css('display', 'block');

现在,在使 .smileys 可见后,第一个功能不起作用。但是,当表情符号默认可见时,它确实有效。

4

4 回答 4

3

您可能需要事件委托 -

$(document).on('click','.smileys img',function () {
            alert("hello");
});
于 2013-04-25T16:21:06.523 回答
1

你应该使用.on('click', function() {....

于 2013-04-25T16:20:55.177 回答
0

Try using the .on() method:

$('.smileys img').on("click", function () {
  // code 
});

Or the .delegate() method:

$("body").delegate(".smileys img", "click", function() {
  // code
});

Also, for revealing the smileys you can use the .show() method.

于 2013-04-25T16:24:03.020 回答
0

您需要将事件处理程序绑定到绑定时存在于 DOM 中的元素。

如果您将脚本称为:

<script>
    $('.smileys img').click(function () {
        alert("hello");
    });
</script>
<div class="smileys">
    <img src="images/smileys/mad.gif"/>
</div>

然后,您需要将事件委托给存在的事物,例如windowdocumentbody

$('body').on('click', '.smileys img', function () {...});

或者,您可以等到文档准备好后再绑定事件:

<script>
    jQuery(function ($) { //aliasing shortcut for $(document).ready...
        $('.smileys img').click(function () {
            alert("hello");
        });
    });
</script>
<div class="smileys">
    <img src="images/smileys/mad.gif"/>
</div>

Document.ready 导致该函数在页面的所有内容构建完成后,但在图像和其他外部内容完成加载之前执行。

或者,您可以简单地在 DOM 中创建元素<script> 之后放置:

<div class="smileys">
    <img src="images/smileys/mad.gif"/>
</div>
<script>
    $('.smileys img').click(function () {
        alert("hello");
    });
</script>
于 2013-04-25T16:33:09.217 回答