簡體   English   中英

將onclick事件添加到動態生成的表中

[英]add onclick event to dynamically generated table

我一直在研究一個功能,它涉及使用jquery創建一個HTML表格,它將在頁面加載時動態顯示一個帳戶列表,這是我沒有遇到的問題。

但是,我還要求向每一行添加一個“onclick”事件,將我重定向到另一個網頁,但這取決於我需要傳遞的參數。 這是我的代碼:

$(document).ready(function() {
            var x = ['Visa-1234', 'Amex-9182', 'Visa-8162', 'Visa-9554'];
            var message = 'No accounts found';

            if (x.length > 0) {
                message = 'Select an account to display the rewards information: ';
            }

            $('#message').text(message);

            var tableContentHtml = '<table class="table-fill"><thead><tr><th class="text-left">Account</th></tr></thead><tbody class="table-hover">';

            for (var i = 0; i < x.length; i++) {
                tableContentHtml += '<tr><td class="text-left" onclick="goAnotherWebPage()">' + x[i] + '</td></tr>';
            }

            tableContentHtml += '</tbody></table>';
            $(tableContentHtml).appendTo('#container');
        });

        function goAnotherWebPage(account) {
            //do some logic here
        }

方法“goAnotherWebPage”應該收到正在顯示的相同帳戶ID,我沒有問題,當我在表創建時傳遞x [i]作為參數時出現問題:

onclick="goAnotherWebPage(x[i])"

這不起作用,它說帳戶沒有定義。

有人可以給我一個提示或提供幫助,以實現這一目標嗎? 提前致謝!

試試吧

for (var i = 0; i < x.length; i++) {
  tableContentHtml += '<tr><td class="text-left" onclick="goAnotherWebPage(\'' + x[i] + '\')">' + x[i] + '</td></tr>';
}

 $(document).ready(function() { var x = ['Visa-1234', 'Amex-9182', 'Visa-8162', 'Visa-9554']; var message = 'No accounts found'; if (x.length > 0) { message = 'Select an account to display the rewards information: '; } $('#message').text(message); var tableContentHtml = '<table class="table-fill"><thead><tr><th class="text-left">Account</th></tr></thead><tbody class="table-hover">'; for (var i = 0; i < x.length; i++) { tableContentHtml += '<tr><td class="text-left" onclick="goAnotherWebPage(\\'' + x[i] + '\\')">' + x[i] + '</td></tr>'; } tableContentHtml += '</tbody></table>'; $(tableContentHtml).appendTo('#container'); goAnotherWebPage = function(account) { console.log(account); } }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="message"></div> <div id="container"></div> 

希望這會幫助你。

我試着了解你需要什么,我為你創建了一個簡單的演示

 $(document).ready(function() { var x = ['Visa-1234', 'Amex-9182', 'Visa-8162', 'Visa-9554']; var message = 'No accounts found'; if (x.length > 0) { message = 'Select an account to display the rewards information: '; } $('#message').text(message); var tableContentHtml = '<table class="table-fill"><thead><tr><th class="text-left">Account</th></tr></thead><tbody class="table-hover">'; for (var i = 0; i < x.length; i++) { tableContentHtml += '<tr><td class="text-left redirect">' + x[i] + '</td></tr>'; } tableContentHtml += '</tbody></table>'; $(tableContentHtml).appendTo('#container'); }); $('body').on('click', '.redirect', function (e) { value = $(this).html(); console.log(value); // do your logic here }) 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="message"></div> <div id="container"></div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM