2013-04-25 54 views
0
$('.smileys img').click(function() { 
      alert("hello"); 

     }); 


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

.smileys css is display:none;使用此按鈕可顯示笑臉:$(「。smileys」).css('display','block');刪除顯示後,jquery函數不起作用:none;

現在,使.smileys可見後,第一個函數不起作用。但是,如果默認情況下可以看到表情符號,它就可以工作。

+0

如果綁定的情況下,這些元素不會在DOM,這意味着存在的選擇器是空,這意味着沒有事件被實際綁定。 – zzzzBov 2013-04-25 16:20:35

+0

您是否嘗試過使用'.on'方法? $(「。smileys img」)。on(「click」,function(){}); – 2013-04-25 16:21:42

+0

@zzzzBov我明白,但我不知道該怎麼做來解決這個問題。 – Jerry 2013-04-25 16:21:46

回答

1

您應該使用.on('click', function() {....

3

你可能需要事件代表團 -

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

這工作,謝謝! – Jerry 2013-04-25 16:24:26

0

嘗試使用.on()方法:

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

還是.delegate()方法:

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

此外,爲了顯示笑臉,您可以使用.show()方法。

0

您需要將事件處理程序綁定到綁定時存在於DOM中的元素。

如果你調用你的腳本:

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

然後你需要將事件委託給的東西存在,如windowdocument,或body

$('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導致在完成頁面的所有內容之後,但在圖像和其他外部內容加載完成之前執行此功能。

或者,也可以簡單地將<script>的元件在DOM創建的:

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