jQuery: $ () คลิก (fn) เทียบกับ $ () ผูก ('คลิก', fn);


115

เมื่อใช้ jQuery เพื่อเชื่อมต่อกับตัวจัดการเหตุการณ์มีความแตกต่างระหว่างการใช้วิธีการคลิกหรือไม่

$().click(fn)

เทียบกับการใช้วิธีการผูก

$().bind('click',fn);

นอกเหนือจากพารามิเตอร์ข้อมูลทางเลือกของ bind


ดูเหมือนว่าการคลิกจะมีพารามิเตอร์ข้อมูลที่เป็นทางเลือกด้วย มีใครรู้บ้างว่ามันมีความแตกต่างกันอย่างไร? ที่มา: api.jquery.com/click
Nick Udell

คำตอบ:


137

สิ่งที่คุ้มค่าจากแหล่ง jQuery :

jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
    "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
    "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){

    // Handle event binding
    jQuery.fn[name] = function(fn){
        return fn ? this.bind(name, fn) : this.trigger(name);
    };
});

ไม่เลยไม่มีความแตกต่าง -

$().click(fn)

โทร

$().bind('click',fn)

6
จริง - click()โดยทั่วไปเป็นชวเลขสำหรับbind('click')(หรือในสมัยนี้มันเรียกกันจริงon('click')ๆ วิธีที่ฉันเห็นคุณอาจช่วยตัวเองด้วยการเรียกฟังก์ชันพิเศษโดยใช้on('click')โดยตรง
Nix

พวกเขาทำเหมือนกัน แต่ผูก () สมมติว่าฉันต้องการให้บางสิ่งเกิดขึ้นเมื่อการใช้งานโฮเวอร์และคลิก ฯลฯ ดูstackoverflow.com/a/519455/292408ด้านล่างสำหรับตัวอย่าง แน่นอนคุณสามารถเชื่อมโยงกับเหตุการณ์เดียวเช่น 'คลิก' ได้เช่นกัน
Elijah Lynn

98

+1 สำหรับคำตอบของ Matthew แต่ฉันคิดว่าฉันควรพูดถึงว่าคุณสามารถผูกตัวจัดการเหตุการณ์มากกว่าหนึ่งตัวได้ในครั้งเดียวโดยใช้ bind

$('#myDiv').bind('mouseover focus', function() {
    $(this).addClass('focus')
});

ซึ่งสะอาดกว่ามากเทียบเท่ากับ:

var myFunc = function() {
    $(this).addClass('focus');
};
$('#myDiv')
    .mouseover(myFunc)
    .focus(myFunc)
;

20
+1 การเชื่อมโยงหลายเหตุการณ์นั้นเป็นข่าวสำหรับฉันและอาจมีประโยชน์มาก
cletus

7

มีความแตกต่างอย่างหนึ่งที่คุณสามารถเชื่อมโยงเหตุการณ์ที่กำหนดเองโดยใช้รูปแบบที่สองที่คุณมี มิฉะนั้นดูเหมือนจะตรงกัน ดู: jQuery Event Docs


1

มีพารามิเตอร์ [data] ของการโยงซึ่งจะเกิดขึ้นเฉพาะเวลาผูกครั้งเดียว

คุณยังสามารถระบุเหตุการณ์ที่กำหนดเองเป็นพารามิเตอร์แรกของการโยง


1

ฉันพบว่า. click () เป็นวิธีที่สมเหตุสมผลกว่า แต่ฉันเดาว่าคุณคิดอย่างไร

$('#my_button').click(function() { alert('BOOM!'); });

ดูเหมือนจะเป็นเรื่องง่ายๆอย่างที่คุณได้รับ


0

หากคุณมี Google Chrome เครื่องมือสำหรับนักพัฒนาของพวกเขามีเครื่องมือตัวฟังเหตุการณ์ให้เลือกองค์ประกอบที่คุณต้องการสอดแนมเหตุการณ์

คุณจะพบว่าการลองทั้งสองวิธีนำไปสู่ผลลัพธ์เดียวกันดังนั้นจึงเทียบเท่ากัน


0

ฉันชอบ.bind ()เพราะสอดคล้องกับอินเตอร์เฟซที่.live () ไม่เพียง แต่ทำให้โค้ดอ่านง่ายขึ้น แต่ยังช่วยให้เปลี่ยนบรรทัดของโค้ดเพื่อใช้วิธีการหนึ่งแทนวิธีอื่นได้ง่ายขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.