Я довольно новичок в jQuery и немного борюсь с проблемой, связанной с делегированием.
В моем коде у меня есть динамическая страница, загруженная:
$("#results").delegate('li', 'click', function(evt){
var queryData = "id=" + $(this).attr("id");
if ( $(this).attr("id") ){
$.ajax({
type: "GET",
url: "wiw_detail_page.html",
data: queryData,
beforeSend: onDetailBeforeSend,
success: onDetailSuccess,
error: onError
});
}
else
{
alert("Please select an Employee from the list");
}
return false;
});
Это функция onDetailSuccess:
function onDetailSuccess( data, status ){
$("body").append( data );
$("#wiw_detail_page").page( );
$.mobile.changePage( "#wiw_detail_page", { transition: 'slide' } );
}
Все работает хорошо, так как моя первая страница перемещена в "wiw_details_page".
Внутри новой страницы у меня есть список полей, под разборным, вот так:
<div data-role="collapsible" data-collapsed="false" data-theme="b" id="comData">
<h2>Communication Data</h2>
<div id="communicationData">
<fieldset>
<label for="address">Address:</label>
<a href="#locationMap">
<input class="goMap" type="text"
name="address" id="address"
disabled="true"
value="<%=employeeprofile-building%>"/>
</a>
</fieldset>
</div>
</div>
Мне нужно прикрепить обработчик щелчков к полю ввода адреса, и поскольку эта страница еще не создана в $ (document) .ready (), я прикрепил к ней делегата следующим образом:
// Use delegation, since detail view is not availble at document.ready time:
$("#wiw_detail_page").delegate('input.goMap','click', function(evt){
if ( $(this).attr( "id" ) == 'address' ){
alert("Click!");
if ( navigator.geolocation ) {
detectBrowser( );
navigator.geolocation.getCurrentPosition( function( position ){
newInitialize( position.coords.latitude, position.coords.longitude );
})
}else{
detectBrowser( );
newInitialize(45.06150, 7.65599);
}
}
});
});
Это делегирование никогда не происходит, и когда я щелкаю по полю ввода, ничего не происходит (даже никаких ошибок).
Я также пытался изменить селектор на:
$("#comData").delegate('input.goMap','click', function(evt)
И, как отчаянная попытка, я изменил его на:
$("body").delegate('input.goMap','click', function(evt)
Любая подсказка?
Извините за такой длинный вопрос и заранее спасибо,
R.