javascript - 如何确定 Javascript 和 Jquery 函数的执行顺序

标签 javascript jquery html jquery-selectors dom-events

我在单击Cancel 按钮时调用了两个函数,一个是 Java 脚本,另一个是 Jquery 函数。
Java 脚本函数在 Jquery 函数之前执行,我想要恰恰相反。
这是我的 HTML 代码

<button type="button" class="noWarning" id="cancelButton" 
    onclick="javascript: showMessage('cancelButton', 'Cancelling...'); disableButtons(); submitForm('${cancelDataRequestFormUrl}');">
    Cancel</button>  

Jquery函数

$(".noWarning").click(function() 
    {
        needToConfirm = false;
        alert("NeedToConfirm : " + needToConfirm);
    });  

showMessage('cancelButton', 'Cancelling...');$(".noWarning").click(function()) 之前被执行所以如何我可以更改执行顺序吗?
编辑:
我用另一个按钮尝试了同样的操作

<button type="button" class="noWarning" id="saveButton" 
    onclick="javascript: submitDataRequest('saveButton', 'Saving...', 'newDataRequestForm', '${saveDataRequestFormUrl}', '${successSaveDataRequestFormUrl}');">
    Save as Draft</button>    

并且其工作正常的 Jquery 函数在 onClick 函数之前被调用。
这让人更加困惑。

最佳答案

在 JavaScript 中,回调和事件处理程序应该按照它们被绑定(bind)的顺序执行,并且没有办法改变这个顺序。 onclick 属性中的代码将在元素创建后直接绑定(bind),因此将最先执行。

防止这种情况的唯一方法是使用 jQuery 的 .removeAttr 在源代码或客户端中删除该属性。 , 如本 test case 所示.

然后您可以按照您希望的执行顺序将回调与 jQuery 绑定(bind):

$(".noWarning").click(function(){
    needToConfirm = false;
    alert("NeedToConfirm : " + needToConfirm);
});

$("#cancelButton").click(function(){
    showMessage('cancelButton', 'Cancelling...');
    disableButtons();
    submitForm('${cancelDataRequestFormUrl}');
});

请注意,onclick 属性的使用在 90 年代被认为是一种不好的做法,应该避免。 JavaScript 应该与 HTML 分开,如果可能最好放在一个单独的文件中。

关于javascript - 如何确定 Javascript 和 Jquery 函数的执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6261656/

相关文章:

javascript - Node.js JSON 异步解析

jquery - 使用箭头键导航到图层

jquery - 在鼠标悬停时使用 jquery 隐藏特定文本

html - 更改字体样式会更改 UI - 标准方法

javascript - 简单的 JS 在更改时更改字段颜色

javascript - 将数组重新映射到对象

javascript - 如何扩展 'resize'事件?

javascript 将对象值写入div

HTML5 必需的输入样式

javascript - 如何在javascript中将哈希表转换为数组