点击事件不在jquery中的div上工作

时间:2011-10-04 09:17:39

标签: jquery javascript-events

我正在使用以下代码

<div class="business-bottom-content" onMouseOver="javascript:this.className='business-bottom-    content-hover';"  onMouseOut="javascript:this.className='business-bottom-content';"> 

jquery脚本如下

 $("div.business-bottom-content").click(
 function()
  {
   alert('ashutosh mishra');
  });

3 个答案:

答案 0 :(得分:24)

您可能在脚本执行后定义了div。

将其包裹在$(document).ready(function() { .... });中,以确保在完整DOM可用后执行。

此外,你应该摆脱那些丑陋的内联事件(如果你甚至需要它们 - 你可以在CSS中使用:hover):

$('div.business-bottom-content').hover(function() {
    $(this).addClass('business-bottom-content-hover');
}, function() {
    $(this).removeClass('business-bottom-content-hover');
});

答案 1 :(得分:2)

你可以试试这个div类必须提到“。”

 $(".business-bottom-content").click(
 function()
 {
      alert('ashutosh mishra');
 });

答案 2 :(得分:0)

在某些情况下,甚至将其包装在$(document).ready(function() { .... });中可能也不够。在这种情况下,只需使用超时功能即可。

HTML

<div id="up-button" class="inc button-number-cart">
 <span class="up-arrow">+</span>
</div> 

JS

setTimeout(function(){
        $(document).on('click','.button-number-cart',function(){
            event.preventDefault();


            const button = $(this);
            const oldValue = button.parent().parent().find('input').val();
            let newVal;

            if (button.find('.up-arrow').length !== 0) {
                newVal = parseFloat(oldValue) + 1;
            } else {
                if (oldValue > 0) {
                    newVal = parseFloat(oldValue) - 1;
                } else {
                    newVal = 0;
                }
            }
            button.parent().parent().find('input').val(newVal);
        });
 },700);