使用OnclientClick调用多个Jquery函数

时间:2015-07-31 13:15:02

标签: javascript

使用OnClientClick =“TempDelete(); Delete();”调用多个Jquery函数是一种好习惯吗?我得到了这个选项,因为我希望TempDelete()在Delete()之前完成执行。当我在一个调用中使用这两个函数时:if(x> 0) {

TempDelete(); Delete(); 执行中没有一致性,有时是Delete();在TemDelete()之前执行;这更像是一种建议,而不是任何建议。

2 个答案:

答案 0 :(得分:0)

这应该没问题,因为处理程序代码内部是同步调用的。

我编写了一个小例子。在通过第二种方法“Delete()”添加div之前,计数器总是递增。

HTML:

<div id="callOnClick">Push me</div>

JS / jQuery的:

var counter = 0;
function TempDelete() {
    counter++;
}

function Delete() {
    $('#callOnClick').after('<div class="Delete">Delete: '+counter+'</div>');
}

$("#callOnClick").click( function (e) {
    TempDelete();
    Delete();
});

CSS:

div {
    cursor: pointer;
    width:200px;
    height:20px;
    background: gray;  
}

.Delete {
    width:100px;
    height:20px;
    color:white;
    background: green;
}

http://jsfiddle.net/61hzv0v2/1/

也许你的代码中有两个事件监听器?

希望它有所帮助。

答案 1 :(得分:0)

首先,您应该在javascript中添加事件侦听器,而不是在标记中添加

$(function(){ // or $(document).ready()
    $('#callOnClick').on('click', function(){
        TempDelete();
        Delete();
    });
});

您还应该查看$.when()$.then()方法以及$.Deferred()对象。

例如

$.when(TempDelete).then(Delete);

您还应遵循函数的javascript约定:构造函数的第一个大写字母

function Person(name, age){
    this.name = name;
    this.age = age;
}

以及方法或函数的第一个小写字母:

function getStuff(obj){
    return obj.property;
}

var obj = {
    hello : function(stuff){
        alert(stuff);
    }
};