JQuery Dymanic Button

时间:2017-01-03 04:04:57

标签: javascript jquery

我有一个输入框。我输入搜索词并返回值。我要做的是单击动态按钮并附加值。但是,当我点击按钮时,它会重新加载页面而不是显示警告框。这只发生在动态按钮而不是searchButton

$(document).ready(function () {
        $('.cta-button').click(function () {
            event.preventDefault();
            alert("You clicked the button");
        });

        $('#searchButton').click(function () {
            event.preventDefault();
            var varSearch = $('#searchDB').val();
            if (!varSearch) {
                $('#result').html("Please enter a search term");
                return;
            }
            $.ajax({
                contentType: "application/json; charset=utf-8",
                data: 'ID=' + varSearch,
                url: "getTest.ashx",
                dataType: "json",
                success: function (data) {
                    var result = '';
                    $.each(data, function (index, value) {
                        result += '' +
                            '<div class="main-area bg-white">' +
                            '<div class="row">' +
                                '<div class="medium-6 columns">' +
                                    '<button type="submit" id="OfferID_' + index + '" class="cta-button cta-button-icon">Add to Cart</button>' +
                                    '<br />' +
                                '</div>' +
                            '</div>' +
                            '</div>'
                    });
                    if (!result) {
                        result = 'No data were found for ' + varSearch;
                    };

                    $('#result').html(result);
                }
            });
        });
    });


<section>
    <div class="row">
        <div class="medium-4 columns medium-centered">
            <div class="search-rewards">
                <input type="search" id="searchDB" />
                <button type="submit" id="button" class="button"></button>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="medium-6 columns medium-centered">
            <div id="result">

            </div>
        </div>
    </div>
</section>

3 个答案:

答案 0 :(得分:5)

您错过了event函数的click参数。没有它,event.preventDefault()什么都不做。

$('.cta-button').click(function(event) {
    event.preventDefault();
    alert("You clicked the button");
});

更新

要绑定到动态按钮,您需要使用委托作为@MACMAN建议:

$(document).on('click', '.cta-button', null, function(event){
    event.preventDefault();
    alert("You clicked the button"); 
});

答案 1 :(得分:1)

使用delegate将click属性指定给动态按钮。

答案 2 :(得分:0)

有时JQuery事件不适用于动态生成的元素。您可以将JQuery.on()用于动态生成的元素。

http://api.jquery.com/on/

尝试使用此

$('.cta-button').on("click", (function() {
      event.preventDefault();
      alert("You clicked the button");
    });