我有一个输入框。我输入搜索词并返回值。我要做的是单击动态按钮并附加值。但是,当我点击按钮时,它会重新加载页面而不是显示警告框。这只发生在动态按钮而不是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>
答案 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()用于动态生成的元素。
尝试使用此
$('.cta-button').on("click", (function() {
event.preventDefault();
alert("You clicked the button");
});