删除display:none后,jquery函数不起作用;

时间:2013-04-25 16:18:30

标签: jquery

 $('.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 个答案:

答案 0 :(得分:3)

您可能需要事件委派 -

$(document).on('click','.smileys img',function () {
            alert("hello");
});

答案 1 :(得分:1)

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

答案 2 :(得分:0)

尝试使用.on()方法:

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

.delegate()方法:

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

此外,为了揭示表情符号,您可以使用.show()方法。

答案 3 :(得分: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>