2011-09-22 26 views
6

Takılıyorum. Saatler arandı ve denendi.jquas olay işleyicisinde javascript işlevi parametresiyle nasıl çağrılır?

DÜZENLEME: Hala çalışamıyorum. Tamam, kaynak kodunu, neyi başarmak istediğimi açıklığa kavuşturmak için koyacağım.

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
    var date_fmt="yyyy-mm-dd"; 
    var time_fmt="HH:MM"; 
    var date_field="#id_start_0, #id_end_0"; //id refering to html input type='text' 
    var time_field="#id_start_1, #id_end_1"; //id refereing to html input type='text' 


    function clearFmt(fmt_type) 
    { 
     if($(this).val() == fmt_type) { 
      $(this).val(""); 

     } 
    } 

    function putFmt(fmt_type) 
    { 
     if($(this).val() == "") { 
      $(this).val(fmt_type); 
     } 
    } 


$(document).ready(function() { 

    $(date_field).attr("title",date_fmt); 
    $(time_field).attr("title",time_fmt); 

    $(date_field).click(function() { 
     clearFmt(date_fmt); 
    }); 

    $(date_field).blur(function(){ 
     putFmt(date_fmt); 
    }); 

    $(time_field).click(function(){ 
     clearFmt(time_fmt); 
    }); 

    $(time_field).blur(function(){ 
     putFmt(time_fmt); 
    }); 

}); 
</script> 

Yardım?

+0

Filmem'in tıklama anında karşı anında değerlendirilmesini istiyorsunuz, değil mi? –

cevap

8

Kullanım jquery bind yöntemi:

function myfunc(param) { 
    alert(param.data.key); 
} 

$(document).ready(function() { 
    $("#foo").bind('click', { key: 'value' }, myfunc); 
}); 

Ayrıca benim jsfiddle bakın. Jquery kullanabilirsiniz da sizi 1.4.3 beri

=== GÜNCELLEME ===

:

function myfunc(param) { 
    alert(param.data.key); 
} 

$(document).ready(function() { 
    $("#foo").click({ key: 'value' }, myfunc); 
}); 

Ayrıca benim ikinci jsfiddle bakın.

=== GÜNCELLEME Her işlev this kendi vardır

2 ===. Bu işlevde clearFmt numaralı telefonu aradıktan sonra this artık tıklanan öğe değildir. İki benzer çözümlerim var:

İşlevlerinizde, örn. element ve $(this)'u element ile değiştirin. Eğer parametre $(this) eklemek zorunda işlevinin çağrılması

function clearFmt(element, fmt_type) { 
    if (element.val() == fmt_type) { 
     element.val(""); 
    } 
} 

.

$(date_field).click(function() { 
    clearFmt($(this), date_fmt); 
}); 

Ayrıca bkz. third jsfiddle.

- = -

Alternatif:

function clearFmt(o) { 
    if ($(o.currentTarget).val() == o.data.fmt_type) { 
     $(o.currentTarget).val(""); 
    } 
} 
$(date_field).click({fmt_type: date_fmt}, clearFmt); 

Ayrıca benim fourth jsfiddle bakın.

+0

@mhd Güncellemeniz için teşekkürler, cevabımı da güncelledim. – scessor

+0

Teşekkürler çok! 3. jsfiddle çözümünü kullanıyorum. – mhd

3

şu bu live demo görüldüğü gibi çalışması gerekir:

function myfunc(bar) { 
    alert(bar); 
} 

$(function() { 
    $("#foo").click(function() { 
     myfunc("value"); 
    }); 
}); 
0
function myfunc(e) { 
    alert(e.data.bar); //this is set to "value" 
} 

$("#foo").click({bar: "value"}, myfunc); 
0
anyFunctionName = (function() 
{ 
    function yourFunctionName1() 
    { 
     //your code here 
    } 

    function yourFunctionName2(parameter1, param2) 
    { 
     //your code here 
    } 

    return 
    { 
     yourFunctionName1:yourFunctionName1, 
     yourFunctionName2:yourFunctionName2 
    } 
})(); 

$document.ready(function() 
{ 
    anyFunctionName.yourFunctionName1(); 
    anyFunctionName.yourFunctionName2(); 
}); 

Not: sonra herhangi bir işlevi gerek dönüş yöntem bildirmek için 'anyFuctionName' kullanmıyorsanız. sadece işlevinizi sadece sizinFunctionName1() gibi yazın. Not:

$ document.ready 'de bölüm parametresi belirtilmemiş. Sadece fonksiyon ismini buraya koy. Eğer 'anyFuctionName' fonksiyonunu kullanırsanız yukarıdaki formatı takip etmelisiniz.

0

İnsanlar JavaScript

MyFunc ("değer") olduğu gibi bu, sadece doğrudan karmaşık çağrı yapıyoruz;

İlgili konular