jQuery两个不同的选择器,但根据哪一个定义$(this)
jQuery two different selectors but defining $(this) depending on which one
我有我刚刚写的这段代码,最初我是作为两个单独的代码做的,但想清理并在一种方法中:
$('#onestepcheckout .ty-billing-first-name input,#onestepcheckout .ty-billing-last-name input').blur(function() {
var firstname = $(this).val();
var lastname = $(this).val();
$.ceAjax('request', fn_url('ac.email'), {
method: 'post',
data: {
'firstname': firstname,
'lastname': lastname
},
caching: true
});
});
我对JS/jQuery相当陌生。如您所见,我为名字和姓氏设置了两次,这当然我知道是行不通的。无论如何,为了我需要的东西而获得这个,或者更确切地说是在上面的一行中要求?
我的想法是对的吗?
var firstname_sel = '#onestepcheckout .ty-billing-first-name input';
var lastname_sel = '#onestepcheckout .ty-billing-last-name input';
$(firstname_sel,lastname_sel).blur(function() {
var firstname = $(firstname_sel).val();
var lastname = $(lastname_sel).val();
$.ceAjax('request', fn_url('ac.email'), {
method: 'post',
data: {
'firstname': firstname,
'lastname': lastname
},
caching: true
});
});
我还没有测试过,但想先检查一下它是否正确。
是的,那会起作用。您可以更改一些内容以使其更高效或更友好。
首先,确保要在blur
上执行该 ajax 调用(请记住,每次用户退出两个输入时都会调用它(。另一种方法是将您的输入包装在<form>
中,并绑定到该表单的 submit
事件,该事件将在用户单击<button type="submit" />
时提交。
其次,您可能需要一些验证,因为当用户退出另一个输入时,一个字段可能为空:firstname = firstname === '' ? 'Default' : firstname;
或类似的东西。
最后,有很多方法可以处理您的绑定/选择问题。您可以改为执行以下操作:
<input id="first-name" class="name-input" ... />
<input id="last-name" class="name-input" ... />
$('.name-input').bind('blur', function() {
var fName = $('#first-name').val();
var lName = $('#last-name').val();
... validation code from above then ajax call ...
});
但是有些人可能不会容忍将功能与类相关联,因为新开发人员查看代码或意外复制和/或误认为样式类很容易错过这一点。
您几乎可以肯定上面唯一可以更改的是,通过在输入本身添加 id 而不是基于父元素进行选择来使您的选择器更简单。
好的设法解决了,这是解决方案
var firstname_sel = '#onestepcheckout .ty-billing-first-name input';
var lastname_sel = '#onestepcheckout .ty-billing-last-name input';
$(firstname_sel+','+lastname_sel).blur(function() {
var firstname = $(firstname_sel).val();
var lastname = $(lastname_sel).val();
$.ceAjax('request', fn_url('ac.email'), {
method: 'post',
data: {
'firstname': firstname,
'lastname': lastname
},
caching: true
});
});
相关文章:
- iPad虚拟键盘-哪一个-javasctript解决方案
- 哪一个是Angular2/Typescript for Windows的最佳IDE
- 哪一个在访问数组长度方面的性能更好
- Angular 2 + 打字稿或 Angular 2 + Javascript 建议使用哪一个
- 我如何比较一组数字,找出哪一个更接近生成的数字
- 这些选择器中哪一个更快
- 这些事件处理程序中的哪一个应该在窗口关闭时触发自定义函数
- jQuery icheck 回调 - 单击了哪一个
- 使用 apply() 与 call(),在这种情况下使用哪一个
- 现代化与仅为CSS中的前缀提供回退.哪一个,为什么
- 使用哪一个 - Kml 或谷歌地图 API
- 哪一个更好,使用带有javascript或canvas的纯html
- 哪一个更适合为我自己的广告网络生成自适应广告代码?文档.写 ?或 innerhtml
- jQuery两个不同的选择器,但根据哪一个定义$(this)
- 这些jQuery JavaScript中的哪一个将具有更好的性能
- 哪一个更好?存储在根文件或直接指向JS的链接上的JavaScript
- 引导.css与引导.js我应该使用哪一个
- Javascript - 多类.如何区分单击了哪一个
- 三个 js 对象在同一个地方相交 - 如何分辨要显示哪一个
- 带和不带类定义的 ReactJS 代码:哪一个是首选