2017-07-29 58 views
0

這是我的第一個問題,我一直在尋找這個問題很長時間,我也不僅僅是jQuery和JavaScript的新手,我現在需要它用於非常小的任務,所以我只是深入瞭解它而深入瞭解它。

我正在使用Laravel 5.4,並且我有一個表格,這個表格的主體是由一個循環組成的,因爲我需要它來顯示來自數據庫的結果,並不重要,但僅僅是爲了解釋。我給了一個圖標,如果點擊它將執行一些操作,首先渲染一個確認消息,然後刪除該行,如果是單擊。

問題是,如果單擊第一行的圖標,而不是其他圖標,我可以將其渲染。 我嘗試了各種方法,但似乎不工作,也可能我誤解的文檔,或者我不理解它的使用

我的代碼是非常簡單的(不執行刪除任務):

$('document').ready(function(){ 
    $('#delete').each(function(){ 
     $(this).click(function(){ 
      return!! confirm("Are you sure you want to delete this?"); 
     }); 
    }); 
}); 

我只想讓確認框出現在我點擊的每個圖標上!

在此先感謝!如果你需要我用更多的信息更新這個問題,請告訴我!

回答

0

這可能是值得給予this讀,當你得到了片刻。瞭解唯一標識符和類名稱之間的區別將有助於您在學習中取得進步。

解決您的問題,最佳做法是使用類名稱而不是唯一標識符。在可能的情況下,將元素上的id="delete"更改爲class="delete"。這樣,我們就可以綁定任何元素上的確認對話框,不管它是否已經在DOM中,或者在以後添加。

$('.delete').click(function() { 
    return !!confirm("Are you sure you want to delete this?"); 
}); 

如果要添加包含通過AJAX此按鈕行,然後你想要的功能綁定像這樣:

$(document).on('click', '.delete', function() { 
    return !!confirm("Are you sure you want to delete this?"); 
}); 

希望這有助於!

+0

我想我不是一個新手只是在jQuery哈哈,謝謝你幫助我,這解決了我的問題,謝謝你的參考,我一定會讀! –

0

你可以在一個包含元素上使用jquery的.on來獲取在所有包含的#delete元素上觸發的事件。

$('body').on('click', '#delete', function(ev) { 
    return!! confirm("Are you sure you want to delete this?"); 
}); 

如果你需要保持信息準確地對被點擊哪一個元素,它在ev.target用(前)。

0

您不能多次使用ID屬性。我建議你使用類(比如class="delete")來代替,並使用此:

$('document').ready(function(){ 
    $(document).on('click', '.delete', function() { 
     return!! confirm("Are you sure you want to delete this?"); 
    }); 
});