我想使用jquery .on()
来执行AJAX
无论如何,我测试下面的两个方法,它们都工作了 我想知道他们之间的区别是什么? 两种方法都正确吗?
<script type="text/javascript">
/*method 1*/
/*$(document).on('submit', '.login-form', function(){ */
$(document).on('click', '.searchtitle', function(){
ttest = $(this).serialize();
console.log(ttest);
});
/*method 2*/
$(".searchtitle").on('click', function(){
ttest = $(this).serialize();
console.log(ttest);
});
</script>
test.html
<form action="" method="post" class="searchtitle">
{% csrf_token %}
search activity :<input type="text" name="title">
<button type="button" class="btn .btn-sm btn-success" id="search">submit</button>
</form>
答案 0 :(得分:0)
方法二因性能原因而更好,因为您限制了每次点击按钮时需要进行的检查范围。
第一种方法不比现已弃用的live
委托更有效,但如果您无法缩小需要针对点击事件进行监控的区域范围,则必须采用这种方法。
答案 1 :(得分:0)
/*method 1*/
$(document).on('submit', '.login-form', function(){
ttest = $(this).serialize();
console.log(ttest);
});
这是事件委托。如果在提交文档中的所有内容时触发它,并检查目标是否有一个类.login-form
,那么请完成剩下的工作。
您可以阅读有关event delegation in jquery here的更多信息。
/*method 2*/
$(".searchtitle").on('click', function(){
ttest = $(this).serialize();
console.log(ttest);
});
这是将事件附加到特定DOM元素。它不会触发文档上的所有提交。但仅限于特定元素。
答案 2 :(得分:0)
第一个称为事件委派,如果您的.searchtitle
元素添加到DOM 以后,
$('body').on('click', 'p', function (e) {
$(this).css('background', 'yellow');
});
$('button').on('click', function () {
$('<p></p>').html('Hello').prependTo('body');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p>Hello</p>
<p>Hello</p>
<button>Add Element</button>
&#13;
$('p').on('click', function (e) {
$(this).css('background', 'yellow');
});
$('button').on('click', function () {
$('<p></p>').html('Hello').prependTo('body');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p>Hello</p>
<p>Hello</p>
<button>Add Element</button>
&#13;