สร้างลิงก์ HTML ที่ไม่ทำอะไรเลย (ไม่มีอะไรจริง)


87

ฉันต้องการลิงค์ที่ไม่ทำอะไรเลย ฉันไม่ต้องการสิ่งนี้:

<a href="#">

แล้วเพราะ URL something.com/whatever/#ที่จะกลายเป็น

เหตุผลเดียวที่ฉันต้องการลิงก์คือเพื่อให้ผู้ใช้เห็นว่าพวกเขาสามารถคลิกที่ข้อความได้ จาวาสคริปต์ถูกใช้เพื่อดำเนินการบางอย่างดังนั้นฉันจึงไม่จำเป็นต้องใช้ลิงก์เพื่อไปที่ใดก็ได้ แต่ฉันต้องการให้มันดูเหมือนลิงค์!

ฉันสามารถใช้แอตทริบิวต์ข้อมูลบางอย่างและบอกให้ CSS ทำให้องค์ประกอบดูเหมือนลิงก์หากมีแอตทริบิวต์นี้ แต่ดูเหมือนจะใช้งานมากเกินไป


เกิดอะไรขึ้นsomething.com/whatever/#?
Charles Sprayberry

1
คุณสามารถให้ href ว่างและส่งคืนเท็จใน javascript แต่จะมีความหมายมากกว่านี้หากคุณเปลี่ยนคุณสมบัติเคอร์เซอร์เป็นpointerใน CSS ของคุณ
JohnP

@CharlesSprayberry: มีสถานการณ์ที่คุณไม่ต้องการ
PeeHaa

นี่เป็นคำถามที่ดีที่จะถามในux.stackexchange.comเช่นกัน

1
คำถามนี้มีการพูดคุยในเชิงลึกมากขึ้นที่นี่: stackoverflow.com/questions/134845/…
DawnPaladin

คำตอบ:


125

สิ่งต่อไปนี้จะป้องกันไม่ให้ href ของคุณถูกเรียกใช้

<a href="#" onclick="return false;">

หากคุณใช้ jQuery event.preventDefault()สามารถใช้ได้


ทำให้เหตุการณ์ onclick เพิ่มเติมถูกยกเลิก
Rauli Rajande

6
ทำให้หน้าเลื่อนไปด้านบน
David Hempy

@DavidHempy ฉันไม่พบสิ่งนี้ เบราว์เซอร์ใด
Curt

1
@curt Google Chrome เวอร์ชัน 63.0.3239.84 (รุ่นอย่างเป็นทางการ) (64 บิต) (หรืออาจจะเก่ากว่าเล็กน้อยเมื่อสองสัปดาห์ก่อน)
David Hempy

สิ่งนี้ใช้ไม่ได้สำหรับปลั๊กอิน wordpress เลื่อนไปที่ id และลิงก์จะยังคงทำอะไรบางอย่าง ในกรณีนี้มันจะเป็นรถบั๊กที่จะเปลี่ยนเส้นทางคุณที่ด้านบนของหน้า
Jiri Otoupal イりオトウパー

89

ลองสิ่งนี้:

<a href="javascript:void(0);">link</a>

4
+1 แต่คำถามสั้น ๆ : มีความแตกต่างระหว่างjavascript:voidและjavascript:void(0)หรือไม่?
Adam Rackis

3
หากคุณจะลองใช้ javascript: void (0) โดยไม่มีพารามิเตอร์คุณจะมี SyntaxError และสคริปต์ทั้งหมดของคุณจะล้มเหลว
alexdets

3
@alexdets javascript:void()จะเป็น SyntaxError แต่javascript:voidจะส่งคืนไม่ได้กำหนด - เหมือนกับvoid(0)ไฟล์. อดัมเท่าที่ฉันสามารถบอกได้voidและvoid(0)เทียบเท่ากับการใช้งานนี้ --- แก้ไข: แม้ว่าฉันจะเห็นความคิดเห็นอื่น ๆ ที่บอกเป็น
นัยว่า

3
คุณใช้ javaScript / javascript / JavaScript / Javascript เป็นตัวพิมพ์ใหญ่หรือไม่?
Tim Truston

2
@TechyTimo ไม่มีการใช้อักษรตัวพิมพ์ใหญ่ไม่สำคัญอันที่จริงแล้วไม่ควรใช้ตัวพิมพ์ใหญ่ ฉันได้ส่งการแก้ไขแล้ว
Weston Ganger

28

ใน HTML5 สิ่งนี้ง่ายมาก เพียงละเว้นhrefแอตทริบิวต์

<a>Do Nothing</a>

จากMDN บนแอตทริบิวต์ href แท็ก :

href

นี่เป็นแอตทริบิวต์เดียวที่จำเป็นสำหรับจุดยึดที่กำหนดลิงก์ซอร์สไฮเปอร์เท็กซ์ แต่ไม่จำเป็นต้องใช้ใน HTML5 อีกต่อไป


แล้วเคอร์เซอร์มือที่วางอยู่บนโฮเวอร์ล่ะ?

รูปแบบเริ่มต้นสำหรับเบราว์เซอร์ไม่สามารถเปลี่ยนเคอร์เซอร์ไปที่ตัวชี้สำหรับแท็กที่มีไม่มีa hrefคุณสามารถเปลี่ยนแปลงได้โดยทั่วไปด้วย CSS ต่อไปนี้

a {
    cursor: pointer;
}
<a>Do Nothing</a>

อย่างไรก็ตามอาจเป็นการดีกว่าที่จะเลือกเกี่ยวกับเรื่องนี้มากขึ้นและใช้กับองค์ประกอบที่คุณต้องการเพิ่มตัวจัดการเหตุการณ์เท่านั้น


สิ่งที่เกี่ยวกับการทำให้แท็บโฟกัสได้?

เพียงแค่เพิ่มลงtabindex="0"ในองค์ประกอบ

<a tabindex="0">Do Nothing</a>


การใช้aแท็กโดยไม่มีลิงก์เหมาะสมหรือไม่

โดยปกติแล้วไม่ควรใช้buttonองค์ประกอบแทนและจัดรูปแบบด้วย CSS แต่ไม่ว่าคุณจะใช้อะไรก็ตามให้หลีกเลี่ยงการใช้องค์ประกอบตามอำเภอใจเช่นdivเมื่อเป็นไปได้เพราะนี่ไม่ใช่ความหมายเลย


1
ด้วย bootstrap 4 ลิงก์ที่ไม่มี href จะไม่ถูกจัดรูปแบบเป็นลิงก์
user3413723

13

อย่าทำให้เป็นลิงค์ (แม้ว่าจะชอบทำก็ตาม) และจัดรูปแบบด้วย CSS เพื่อให้ดูเหมือนลิงก์:

p.not-a-link { text-decoration: underline; cursor: pointer } 

หรือดีกว่านั้นเพียงแค่สร้างลิงก์และปล่อยให้ฟังก์ชันจาวาสคริปต์ซึ่งใช้e.preventDefault()เพื่อป้องกันการเชื่อมโยง

เพิ่มลิงก์เข้าไปด้วยhrefเพื่อให้ผู้ใช้ที่ไม่ได้เปิดใช้งาน JS จะยังคงใช้งานได้ (เป็นทางเลือก)


1
+1 ด้วยการอภิปราย IE5.5 สรุปแล้วสแปนจะดีกว่า ap หรือไม่?
amelvin

1
ฉันชอบช่วง P สามารถสร้างแถวใหม่ได้ในขณะที่ span ไม่ได้
Ronnie Oosting

9

<a href="javascript:;">Link text</a> - นั่นคือสิ่งที่ฉันมักจะใช้


5
สิ่งนี้จะไม่โหลดหน้าซ้ำด้วยเบราว์เซอร์บางตัวหรือไม่?
Curt

@ เคิร์ท: คุณพูดถูกอ่านคำถามผิด คุณได้รับความคิดเห็นเพิ่มคะแนน :-)
Scott Brown

... และฉันได้รับการโหวต 2 ครั้งรวมถึงหนึ่งโหวตหลังจากแก้ไขแล้ว! รุนแรง!
Scott Brown

ลบรหัสแรกออกแล้วฉันจะได้รับอนุญาตให้ลบการโหวตลงของฉัน :) มันจะไม่ให้ฉันลบการโหวตลงคะแนน "ล็อก"
Curt

1
เบราว์เซอร์ใดที่มีผลต่อสิ่งนี้ยังคงเป็นปัญหาอีกต่อไป สิ่งนี้น่าจะเป็นที่ต้องการมากกว่าvoid(0)เพราะมันปรากฏในแถบสถานะ ฉันพูดแบบนั้นเพราะผู้ใช้ตั้งค่าสถานะว่าเป็นข้อผิดพลาด / ข้อผิดพลาด (ซึ่งเห็นได้ชัดว่าไม่ใช่) ดังนั้นฉันคิดว่าการมีมันทำให้พวกเขาสับสน
chunk_split

4

เราสามารถบรรลุสิ่งนั้นได้โดยใช้ javascript void ซึ่งโดยปกติจะเกี่ยวข้องกับการประเมินนิพจน์และการส่งคืนที่ไม่ได้กำหนดซึ่งรวมถึงการเพิ่มjavascript:void(0);ใน href

โดยปกติแล้วตัวดำเนินการโมฆะจะใช้เพียงเพื่อให้ได้ค่าดั้งเดิมที่ไม่ได้กำหนดโดยปกติจะใช้ "void (0)" (ซึ่งเทียบเท่ากับ "void 0") ในกรณีเหล่านี้สามารถใช้ตัวแปร global ที่ไม่ได้กำหนดแทนได้ (สมมติว่าไม่ได้กำหนดให้เป็นค่าที่ไม่ใช่ค่าเริ่มต้น)

a {
  text-decoration: initial;
}
<a href="javascript:void(0);"> This link actually does nothing when clicked</a>


2

คำตอบของ @ Curt จะใช้งานได้ แต่คุณสามารถใช้รูปแบบเคอร์เซอร์ใน css เพื่อทำให้ดูเหมือนลิงค์โดยไม่ต้องกังวลกับการสร้างลิงค์ปลอม ใช้มือหรือตัวชี้ขึ้นอยู่กับความสอดคล้องของเบราว์เซอร์

cross browser conformant pointer css (จากcursor style guide):

element {
    cursor: pointer;
    cursor: hand;
}

@PeeHaa ใช้ตัวชี้เฉพาะในกรณีที่คุณไม่ต้องการให้ทำงานใน IE5.5 และรุ่นก่อนหน้า!
amelvin

3
นั่นคือสิ่งที่ฉันพูด! โปรดอย่าพูดถึง IE5.5: P ในส่วนแบ่งการบันทึก IE5.5 0.17%รุนแรงมากขึ้นคือ หากผู้คนยังคงใช้เวอร์ชันนั้นอยู่ก็ไม่สมควรที่จะท่องเว็บ
PeeHaa

2

วิธีหนึ่งที่ไม่มีใครพูดถึงคือชี้ href ไปยังตำแหน่งไฟล์ในเครื่องที่ว่างเปล่าเช่นนั้น

<a href='\\'>my dead link</a>

ทำไม? หากคุณใช้เฟรมเวิร์กเช่นการตอบสนองหรือเชิงมุมคอมไพเลอร์จะพ่นคำเตือนบางอย่างออกมาซึ่งอาจทำให้บันทึกหรือคอนโซลของคุณสกปรก เทคนิคนี้ยังช่วยป้องกันไม่ให้หุ่นยนต์หรือแมงมุมเชื่อมโยงสิ่งต่างๆไม่ถูกต้อง


-1

อย่าใช้<a>... แทนที่จะใช้<span class='style-like-link'> แล้วใช้คลาสเพื่อจัดรูปแบบตามที่คุณต้องการ


มีอะไรผิดปกติกับการใช้แท็กสมอโดยไม่ต้องเชื่อมโยงตัวเองเป็นไม่ได้ที่จะพูดถึงว่ามีหลายกรณีที่มันจะทำให้มากมากขึ้นความรู้สึกที่จะทำเช่นนั้นแทนที่จะแทนที่ด้วยแท็กหลอกสมอ ไม่ต้องพูดถึงการจัดแต่งทรงผมองค์ประกอบหนึ่งให้ดูเหมือนอีกองค์ประกอบหนึ่ง แต่นำไปใช้แตกต่างกันจะทำให้เกิดปัญหาการ
ทิม

ตกลง ทั้งหมดขึ้นอยู่กับกรณีการใช้งานและสิ่งที่คุณพยายามทำให้สำเร็จ ฉันให้ข้อมูลนี้เป็นคำตอบเพื่อช่วยให้ผู้อื่นทราบว่านี่เป็นทางเลือกอื่น
Bryce

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