iT邦幫忙

0

一個按鍵同時觸發兩個jquery事件一問

環境:Boostrap,C#.Net Core MVC,Html,Css,Jquery

小弟目前做了個報表,使查詢出來的結果每一列都成為超連結,但是我的TR內有一個Button,是使用到boostrap的modal,當我點擊此button時,會同時觸發modal和超連結,我想要避免點擊button時觸發超連結該如何處理?

有想過一個最智障的方法,把除了button的欄位之外的td做超連結,我總共有14個欄位,這樣做蠻蠢XD......

先感謝大家


語法大致如下

//HTML
<tr title="開啟" class='clickable-column'
data-id="@e.Funding_Id" 
data-unit="@e.Bs_unitno" 
data-season="@e.Season"                                                        data-area="@e.FundingArea"                                                    data-year="@e.Year">     
<td>略........<td>
<td> <button  data-toggle="modal" data-target="#myModal">  Modal </button> <td>
</tr>

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
</div><!-- /.modal -->


//JS
 $(".clickable-column").click(function () {
    var season = $(this).data("season");
    var area = $(this).data("area");
    var year = $(this).data("year");
    var id = $(this).data("id");
    var unit = $(this).data("unit");

        window.open(....);
        });

最終解決辦法,將除了modal以外的td都附上class【clickable-column】
將data-xxx內容放在tr,使用jquery closet("tr")取出該值即可,也不會太蠢~

$(".clickable-column").click(function () {
    
    var tr = $(this).closet("tr");

    var season = tr.data("season");
    var area = tr.data("area");
    var year = $tr.data("year");
    var id = tr.data("id");
    var unit = tr.data("unit");

    window.open(....);
    });
看更多先前的討論...收起先前的討論...
可以試試看trigger
稍微看了一下好像有點可能?我來試試,對trigger不是很熟~ 感謝你
按鈕加個event.stopPropagation()就可以了吧(?
是說為甚麼tr不直接加個onclick event的attribute
要用jquery 點擊時再抓取data然後open@@?
event.stopPropagation() 這個得試試

後面你說的,嗯習慣問題XDD 不過你說的好像比較直覺,我的看起來好搞剛,哈哈。就是modal用慣了一直在那抓data QQ
我只是當純好奇用意而已
需求解法不只一種
不會造成其他問題出現的解法都是好想法(?

1 個回答

0
小魚
iT邦大師 1 級 ‧ 2021-07-08 11:59:06
最佳解答

你的Model觸發為什麼擺在那裏...
一般好像比較少用整列去觸發事件,
比較常做是用其中一欄去做.

看更多先前的回應...收起先前的回應...

Modal是單顆按鈕觸發 是編輯的作用

整列觸發的是超連結~【較方便選擇】,單TD當然也是可以,只是整列
搭配上table-hover,加上cursor:pointer,使用者比較有感覺,移上去就可以做超連結~

但現在我想點編輯,會出現編輯modal+超連結

小魚 iT邦大師 1 級 ‧ 2021-07-08 18:49:28 檢舉

那就看你們能不能判斷他是點在按鈕,
如果是點在按鈕就不要做動作。

嗯啊~~
這邏輯我知道,就是不知道有什麼做法可以去處理這個判斷XD
也許Jquery的某個...東東可處理

小魚 iT邦大師 1 級 ‧ 2021-07-09 00:29:41 檢舉

我沒做過這種事 XD
所以我也不知道,
你在$(".clickable-column").click事件裡面試著去抓看看this看能不能抓到是誰觸發的.
console.log一下this.

我要發表回答

立即登入回答