2017-02-09 61 views
1

編輯下面去舉開關使用JavaScript添加不火的事件

我有一個表,它必須爲每個行的行單擊事件。問題在於我在最後一列(「BootstrapSwitch」)中添加了一個開關,並且該開關不會觸發狀態更改或單擊事件,因爲行單擊事件與其重疊。我知道這個事件是有效的,因爲如果我將交換機放在其他任何地方都可以。

無論如何,在所有行中只有一列有行事件嗎?

// Switch event 
$('[name="my-checkbox"]').on('switchChange.bootstrapSwitch', function(event, state) { 
    console.log(this); // DOM element 
    console.log(event); // jQuery event 
    console.log(state); // true | false 
}); 

// row click 
$(document).on('click','.rowDev', function(e) { 
    e.preventDefault(); 
    // more code 
}); 

編輯

提供的答案應該幫助我,但我注意到另一個問題。射擊事件問題。附加開關使用JScript表和初始化也許不工作,因爲任何交換機的動態添加工作,只是那些我手動添加上的.html

這是我添加到表

"<td><input class='make-switch' type='checkbox' name='my-checkbox' "+ (!anyUnattendedAlert?"checked ":"")+"data-on-color='success' data-off-color='danger' data-on-text='Si' data-off-text='No'>" + 
            "</td>"+ 

,當所有行添加

$("[name='my-checkbox']").bootstrapSwitch(); 

也tryed來初始化每一行我補充。 我一直在嘗試在其他表中我沒有行事件,仍然沒有觸發開關事件(事件提供下面的評論)。

還不知道如何添加這些開關並初始化它們的工作。

P.D:css和js的工作原理是因爲開關添加了手動觸發事件。

感謝

+0

可以嗎請發佈點擊處理程序的完整代碼? –

回答

4

您可以通過在click事件,觸發在引導開關控制調用stopPropagation()解決這個問題。如果你喜歡

$('[name="my-checkbox"]').on('click', function(e) { 
    e.stopPropagation(); 
}); 

請注意,您也可以加入兩個事件處理程序一起在一個on()電話::這將阻止事件冒泡DOM和射擊父.rowDev

$('[name="my-checkbox"]').on({ 
    'switchChange.bootstrapSwitch': function(e, state) { 
    console.log(this); // DOM element 
    console.log(e); // jQuery event 
    console.log(state); // true | false 
    }, 
    'click': function(e) { 
    e.stopPropagation(); 
    } 
}); 
+0

嗯,我認爲代碼應該是答案,但仍不能解決事件,注意到另一個錯誤。編輯問題。 –