如何定位旁加载的 HTML
How to target HTML that is side-loaded
我正在使用名为 Stripe 的支付网关,专门使用其 checkout cart 系统。
我已经设法让购物车正常工作,它会根据产品在我需要时创建客户、订单和付款。但是,我不是很 javascript 导向,但想集成一种自动将用户电子邮件插入结帐电子邮件字段的方法。我试过这个:
$(document).ready(function() {
$('.stripe-button-el').click(function() {
setTimeout(function() {
$('.Fieldset').closest('.Fieldset-input').attr('value', 'some@email.com');
console.log('Value 1: ' + $('.Fieldset-input').attr('value'));
console.log('Value 2: ' + $('.Fieldset').closest('.Fieldset-input') .attr('value'));
}, 2000);
});
});
但是,这两个值都未定义。我添加 setTimeout()
的原因是因为结帐是由按钮触发的,在单击该按钮之前 HTML 不会添加到站点,因此,我无法访问其属性。我知道这样做是为了安全,以防止您访问卡信息,但是有什么办法可以解决这个问题吗?
我将用户电子邮件存储在一个对象中,所以我只想说:
$(document).ready(function() {
var user { 'email': <?= $email ?> };
// put this email inside the checkout email property
$('input[type=email]').attr('value', user.email);
}
感谢@yomisimie 在评论中提供此内容,有一种 'advanced' 方法可以添加包含 'email' 字段的按钮:
handler.open({
email: 'some@email.com'
});
可以在 documentation.
中找到
似乎是在回传中添加元素,所以我认为您必须检查文档就绪块以查看该元素是否存在。像这样:
$(document).ready(function() {
if ($('.Fieldset').find('.Fieldset-input').is(':visible')) {
$('.Fieldset').find('.Fieldset-input').attr('value', 'some@email.com');
console.log('Value 1: ' + $('.Fieldset-input').attr('value'));
console.log('Value 2: ' + $('.Fieldset').find('.Fieldset-input').attr('value'));
}
});
在我看来你必须使用 .find()
方法来获取 input
。
我正在使用名为 Stripe 的支付网关,专门使用其 checkout cart 系统。
我已经设法让购物车正常工作,它会根据产品在我需要时创建客户、订单和付款。但是,我不是很 javascript 导向,但想集成一种自动将用户电子邮件插入结帐电子邮件字段的方法。我试过这个:
$(document).ready(function() {
$('.stripe-button-el').click(function() {
setTimeout(function() {
$('.Fieldset').closest('.Fieldset-input').attr('value', 'some@email.com');
console.log('Value 1: ' + $('.Fieldset-input').attr('value'));
console.log('Value 2: ' + $('.Fieldset').closest('.Fieldset-input') .attr('value'));
}, 2000);
});
});
但是,这两个值都未定义。我添加 setTimeout()
的原因是因为结帐是由按钮触发的,在单击该按钮之前 HTML 不会添加到站点,因此,我无法访问其属性。我知道这样做是为了安全,以防止您访问卡信息,但是有什么办法可以解决这个问题吗?
我将用户电子邮件存储在一个对象中,所以我只想说:
$(document).ready(function() {
var user { 'email': <?= $email ?> };
// put this email inside the checkout email property
$('input[type=email]').attr('value', user.email);
}
感谢@yomisimie 在评论中提供此内容,有一种 'advanced' 方法可以添加包含 'email' 字段的按钮:
handler.open({
email: 'some@email.com'
});
可以在 documentation.
中找到似乎是在回传中添加元素,所以我认为您必须检查文档就绪块以查看该元素是否存在。像这样:
$(document).ready(function() {
if ($('.Fieldset').find('.Fieldset-input').is(':visible')) {
$('.Fieldset').find('.Fieldset-input').attr('value', 'some@email.com');
console.log('Value 1: ' + $('.Fieldset-input').attr('value'));
console.log('Value 2: ' + $('.Fieldset').find('.Fieldset-input').attr('value'));
}
});
在我看来你必须使用 .find()
方法来获取 input
。