2012-12-12 88 views
0

我有以下的jQuery代码:制作按钮触发功能

$("#btnReset").click(function() { 
    ColReorder.fnReset(oTable); 
    return false; 
}); 

和HTML如下:

<div style="padding: 5px 5px 1px 0px; float: right" id="globalbutton-row" class="ex"> 
    <button class="button" type="button" id="btnReset"><%=rb.getString("button.reset")%></button> 
    <button class="button" type="button" id="btnDeveloperSampleMenu" onclick="javascript:CallDeveloperSampleMenu()"><%=rb.getString("button.devsamplemenu")%></button> 
</div> 

我希望按钮“重置”来启动功能ColReOrder.fnReset但由于某种原因,这是行不通的。

+0

你是什么意思的“不工作”?你看到你的控制台有任何错误吗? –

+0

您的ColReorder.fnReset(oTable)函数在哪里? –

+3

你准备好了文件吗? – adeneo

回答

1

尝试使用事件代表团。当你的JavaScript被执行时,有可能是元素没有加载到dom中。将点击事件附加到文档将使代码正常工作,方法是点击时单击,然后搜索您的选择器。

$(document).on('click','#btnReset',function() { 
    ColReorder.fnReset(oTable); 
    return false; 
    }); 
+0

这个工程!谢谢:) –

2

您必须小心,不要引用DOM中尚未加载的任何东西。如果在代码被触发之前<button>未被加载到DOM中,则不会发生任何事情。您可以通过加载的一切,当运行代码解决这个问题:

$(document).ready(function() { 
    $("#btnReset").click(function() { 
    ColReorder.fnReset(oTable); 
    return false; 
    }); 
}); 

另外,如果<button>通过AJAX或其他方式加入,你将有同样的问题。您可以通过使用on()方法解决这个问题:

$(document).ready(function() { 
    $(document).on('click',"#btnReset", function(event) { 
    ColReorder.fnReset(oTable); 
    return false; 
    }); 
}); 
+0

live()函数在最新的jQuery中已被弃用。使用.on()代替 – bluetoft

+0

谢谢@Bluetoft。我相应地更新了我的答案。 –

+0

这不是'如何''工作。你不只是用'.on()'替换'.live()'。他们是不同的。它应该是'$('#parent')。on('click','#btnReset',function(){',其中''parent''是最接近的父节点,它总是在DOM中(可以是'文档') –

0

你必须加载文档后执行代码。

$(function() { 
    $("#btnReset").click(function() { 
    ColReorder.fnReset(oTable); 
    return false; 
    }); 
});