Я пытаюсь реализовать код, указанный в этом ответе. Я хотел бы еще больше упростить его, используя closest()
чтобы найти id
ближайшего div
и использовать его как местоположение, но он не работает - я просто получаю "undefined" в своем текстовом поле.
Здесь сценарий:
function updateDetails(date) {
var loc = $(this).closest("div").attr("id");
$('#buy-form').animatescroll({scrollSpeed:700,easing:'easeInOutSine'});
document.getElementById('date').value= date;
document.getElementById('venue').value= loc;
$('#resicheck').attr('disabled', true);
}
Здесь (упрощенная) разметка:
<div id="Philadelphia">
<a href="javascript:updateDetails('20-24 January');">20-24 January</a>
</div>
Что я делаю не так?
в HTML
вы не приняли this
<div id="Philadelphia">
<a href="javascript:updateDetails('20-24 January',this);">20-24 January</a>
</div>
IN JS
function updateDetails(date,this) {
var loc = $(this).closest("div").attr("id");
$('#buy-form').animatescroll({scrollSpeed:700,easing:'easeInOutSine'});
document.getElementById('date').value= date;
document.getElementById('venue').value= loc;
$('#resicheck').attr('disabled', true);
}
и jquery вам нравится очень просто
Теперь в html
<div id="Philadelphia">
<a href="#">20-24 January</a>
</div>
В JS
$("#Philadelphia").on("click","a",function(e){
e.preventDefault();
var date=$(this).text();
var loc = $(this).closest("div").attr("id");
$('#buy-form').animatescroll({scrollSpeed:700,easing:'easeInOutSine'});
$('#date').val(date);
$("#venue").val(loc);
$('#resicheck').attr('disabled', true);
});
$(this)
- это то, что вы ожидаете?