Bootstrap ควบคุมด้วย“ data-toggle”


154

มีวิธีการกำหนดมากกว่าหนึ่งเหตุการณ์ให้กับตัวควบคุมการบูตผ่าน "data-toggle" หรือไม่ ตัวอย่างเช่นสมมติว่าฉันต้องการปุ่มที่มี "คำแนะนำเครื่องมือ" และ "ปุ่ม" สลับที่ได้รับมอบหมาย
Tried data-toggle = "ปุ่มคำแนะนำเครื่องมือ" แต่คำแนะนำเครื่องมือทำงานเท่านั้น

แก้ไข:

นี่เป็น "วิธีแก้ปัญหา" ได้อย่างง่ายดายด้วย

$("#newbtn").toggleClass("active").toggleClass("btn-warning").toggleClass("btn-success");

คำตอบ:


330

หากคุณต้องการเพิ่มmodal และ tooltipโดยไม่ต้องเพิ่ม javascript หรือแก้ไข tooltip function คุณสามารถล้อมองค์ประกอบรอบ ๆ

<span data-toggle="modal" data-target="modal">
    <a data-toggle="tooltip" data-placement="top" title="Tooltip">
      Hover Me           
    </a>
</span>

6
นั่นเป็นวิธีที่ดีที่สุดเพราะมันเป็นข้อกังวลของการนำเสนอต่อเลเยอร์การนำเสนอ
LastTribunal

3
มีความแตกต่างบางอย่าง: องค์ประกอบdata-toggle="tooltip"ภายในปุ่ม (ปุ่ม) หลักจะแสดงด้านนอกขององค์ประกอบนั้นอย่างเป็นระเบียบในขณะที่มันจะทับซ้อนกับองค์ประกอบนั้นหากตั้งค่าไว้ภายในตัวหุ้มส่วนขยาย
เบนจามิน

1
ขอบคุณนั่นคือวิธีที่ควรทำ - ไม่มี javascript
tsadkan yitbarek

สั้นง่ายและสมาร์ทโซลูชั่น การเพิ่ม Span ไปยังแท็ก Anchor ไม่เปลี่ยนการออกแบบใน bootstrap ดังนั้นนี่คือโซลูชั่นที่สมบูรณ์แบบสำหรับการรันโมเดลและคำแนะนำเครื่องมือร่วมกัน
ankit suthar

สิ่งนี้ไม่ได้ผลสำหรับฉัน<span data-toggle="modal" data-target="#myModalForm" title="Click to edit row" data-row="0" data-cmid="425" data-id="11788" data-src="1.1.1.1" data-src_desc="null" data-dst="2.2.2.2" data-dst_desc="null" data-protocol="TCP" data-ports="80" data-remarks="none"><a class="btn btn-sm btn-info" data-toggle="tooltip" title="Click to edit row" data-original-title="Click to edit row" data-trigger="hover" href="javascript:void(0)"><i class="fa fa-pencil" aria-hidden="true"></i></a></span>
shorif2000

72

เนื่องจากคำแนะนำเครื่องมือไม่ได้เริ่มต้นโดยอัตโนมัติคุณสามารถทำการเปลี่ยนแปลงในการเริ่มต้นคำแนะนำเครื่องมือ ฉันทำของฉันเช่นนี้:

$(document).ready(function() {
    $('body').tooltip({
        selector: "[data-tooltip=tooltip]",
        container: "body"
    });
});

ด้วยมาร์กอัปนี้:

<button type="button" data-target="#myModal" data-toggle="modal" data-tooltip="tooltip" class="btn btn-info" title="Your tooltip">Text here</button>

data-tooltipแจ้งให้ทราบล่วงหน้า

ปรับปรุง

หรือเพียงแค่

$('[data-tooltip="tooltip"]').tooltip();

10
ทำให้ง่ายขึ้นด้วย: $ ('[data-tooltip = "tooltip"]') tooltip ();
Ryan Currah

3
ใช้คำตอบที่อัปเดตของคุณและใช้งานง่ายมากทำงานได้อย่างสมบูรณ์
The One and Only ChemistryBlob

1
ดีกว่าการห่อโซลูชันที่ดี
D3VELOPER

1
ปัญหาของปัญหานี้ (และวิธีแก้ไขปัญหาอื่น ๆ ในคำถามนี้คือ) เมื่อคุณคลิกเพื่อเปิดคำกริยาและจากนั้นปิดคำแนะนำเครื่องมือจะปรากฏขึ้นอีกครั้ง (หรือยังคงมองเห็นได้) แม้ว่าเมาส์จะปล่อยปุ่มไว้ก็ตาม นี่เป็นเรื่องที่น่ารำคาญมากถ้าคุณมีปุ่มในตารางในทุกแถวเพราะอาจบล็อกปุ่มด้านบน / ด้านล่าง วิธีเดียวที่จะซ่อนมันคือคลิกที่ด้านนอกของเคล็ดลับเครื่องมือ
กอด

1
ฉันชอบวิธีนี้มากกว่าคำตอบที่ยอมรับได้ด้วยเสื้อคลุม มันง่ายมากเมื่อขยายขีดความสามารถ HTML5 โดยไม่ต้องโหลด DOM มากเกินไป ในกรณีของฉันวิธีห่อหุ้มดูเหมือนจะไม่ทำงาน
Canelo Digital

11

ฉันจัดการเพื่อแก้ไขปัญหานี้โดยไม่จำเป็นต้องเปลี่ยนมาร์กอัพใด ๆ ด้วย jQuery ชิ้นต่อไปนี้ ฉันมีปัญหาที่คล้ายกันซึ่งฉันต้องการคำแนะนำเครื่องมือบนปุ่มที่ใช้ data-toggle สำหรับ modal อยู่แล้ว สิ่งที่คุณต้องทำที่นี่คือเพิ่มชื่อลงในปุ่ม

$('[data-toggle="modal"][title]').tooltip();

9

นี่เป็นทางออกที่ดีที่สุดที่ฉันเพิ่งใช้งาน:

HTML

<a data-toggle="tooltip" rel="tooltip" data-placement="top" title="My Tooltip text!">Hover over me</a>

JAVASCRIPT ที่คุณต้องการรวมอยู่แล้วไม่ว่าคุณจะใช้วิธีใด

$('[rel="tooltip"]').tooltip(); 

1
นี่คือคำตอบที่สะอาดและน่า
สะพรึงกลัว

8

ยัง. อย่างไรก็ตามมีคนแนะนำว่าให้เพิ่มคนนี้ในวันเดียว

ปัญหา bootstrap Github ต่อไปนี้แสดงตัวอย่างที่สมบูรณ์แบบของสิ่งที่คุณต้องการ เป็นไปได้ - แต่ไม่ใช่โดยไม่ต้องเขียนโค้ดวิธีแก้ไขของคุณเองในขั้นตอนนี้

ลองดู ... :-)

https://github.com/twitter/bootstrap/issues/7011


น่าเศร้าที่ปัญหา (# 7011) ถูกปฏิเสธ
TJ Crowder

3

ฉันใช้ href เพื่อโหลด modal และปล่อย data-toggle สำหรับ tooltip:

<a 
    data-toggle="tooltip"
    data-placement="top"
    title="My Tooltip text!"
    href="javascript:$('#id').modal('show');"
>
+
</a>

3

เนื่องจาก Bootstrap บังคับให้คุณเริ่มต้นเคล็ดลับเครื่องมือผ่าน Javascript เท่านั้นฉันจึงเปลี่ยนdata-toggle="tooltip"(เนื่องจากมันไร้ประโยชน์แล้ว) class="bootstrap-tooltip"และใช้ Javascript นี้เพื่อเริ่มต้นคำแนะนำเครื่องมือของฉัน:

$('.bootstrap-tooltip').tooltip();

ดังนั้นฉันจึงมีอิสระที่จะใช้data-toggleแอตทริบิวต์สำหรับสิ่งอื่น (เช่นdata-toggle="button")


ยิ่งใหญ่ เพิ่ม HTML ด้วย
Web_Developer

2

เพียงเพื่อเติมเต็ม @Roman Holzner คำตอบ ...

ในกรณีของฉันฉันมีปุ่มที่แสดงคำแนะนำเครื่องมือและควรปิดการใช้งานจนกว่าจะดำเนินการเพิ่มเติม ใช้วิธีการของเขา modal ทำงานแม้ว่าปุ่มจะปิดการใช้งานเพราะการโทรอยู่นอกปุ่ม - ฉันอยู่ในไฟล์ Laravel เบลดเพื่อชัดเจน :)

<span data-toggle="modal" data-target="#confirm-delete" data-href="{{ $e->id }}">
    <button name="delete" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Excluir Entrada" disabled>
        <i class="fa fa-trash fa-fw"></i>
    </button>
</span>

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

<span data-toggle="tooltip" data-placement="bottom" title="Excluir Entrada" disabled>
    <button name="delete" class="btn btn-default" data-href="{{ $e->id }}" data-toggle="modal" data-target="#confirm-delete" disabled>
        <i class="fa fa-trash fa-fw"></i>
    </button>
</span>

หากคุณต้องการทดสอบให้เปลี่ยนแอตทริบิวต์ด้วยรหัส JQuery:

$('button[name=delete]').attr('disabled', false);

2

ทางออกหนึ่งเพิ่มเติม:

    <a data-toggle="modal" data-target="#exampleModalCenter">
      <span
        class="tags"
        data-toggle="tooltip"
        data-placement="right"
        title="Tooltip text"
      >
        Text
     </span>
   </a>

2

.stretched-linkมีวิธีการแก้ปัญหาที่ดีโดยใช้ระดับคือ .position-relativeปุ่มจะต้องมีชั้นเรียน นี่คือตัวอย่างการทำงานที่สมบูรณ์:

เคล็ดลับเครื่องมือจะต้องเพิ่มลงในปุ่มมิฉะนั้นตำแหน่งของมันจะไม่ถูกต้อง

$('[data-toggle="tooltip"]').tooltip();
/*DEMO*/.btn{margin-left:5rem;margin-top:5rem}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

<!--BUTTON-->
<button class="btn btn-primary position-relative" data-toggle="tooltip" data-trigger="hover" data-placement="left" title="Tooltip text">
    <span class="stretched-link" data-toggle="modal" data-target="#exampleModal"></span>
    Click Me!
</button>

<!--DEMO MODAL-->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><h5 class="modal-title" id="exampleModalLabel">Modal title</h5><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body">Modal body</div></div></div></div>

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js"></script>


1

เมื่อคุณเปิดคำกริยาบนแท็กและต้องการแสดงคำแนะนำเครื่องมือและถ้าคุณใช้คำแนะนำเครื่องมือภายในแท็กมันจะแสดงคำแนะนำเครื่องมือแท็กใกล้เคียง แบบนี้

ป้อนคำอธิบายรูปภาพที่นี่

ฉันจะแนะนำให้ใช้ div นอกแท็กและใช้"display: inline-block;"

<div data-toggle="tooltip" title="" data-original-title="Add" style=" display inline-block;">
    <a class="btn btn-primary" data-toggle="modal" data-target="#myModal" onclick="setSelectedRoleId(6)">
     <span class="fa fa-plus"></span>
    </a>
</div>

ป้อนคำอธิบายรูปภาพที่นี่


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