2010-05-25 3 views
3

Я пытаюсь добавить событие click для элемента, возвращающегося с сервера через ajax. По-видимому, я должен привязать свой js-файл к моему ответу ответа вместо моего основного скрипта. Это лучшая практика? Должен ли я создать отдельный файл js для добавления события в возвращаемый текст?JQuery и Ajax Post issue

Пример:

Мой Jquery - selectWeek.js

$(document).ready(function(){ 

//handle ajax.. 
var url="sendSchedule.php"; 
$.post(
url, 
{week:input}, 
function(responseText){ 

    $("#ajax").html(responseText); 

    }, 
    "html" 

); 

// click on #add button 

    $("#add").click(function(){ 
//do something 
return false; 
    }); 
}); 

Моя главная страница

<script type="text/javascript" src="JS/selectWeek.js"></script> 


</HEAD> 
<BODY> 
//the code that trigger ajax is omitted 

<div id=ajax> 
    //the response text will be inserted here 
</div> 


</BODY> 
</HTML> 

ответ от сервера

// display html (omit) 


// Do I have to attach the same js file to let #add listen the event? 
<script type="text/javascript" src="JS/selectWeek.js"></script> 

<form> 
    <input type='button' id='add' value='add'/> 
</form> 

Я не уверен, если я сделайте мой q uestion прозрачный. Я хочу знать, нужно ли добавлять события в возвращаемый текст. Должен ли я добавить ссылку js-файла на возвращаемый текст или есть способ сделать это на главной странице. Я просто хочу написать свой js-код на главной странице и сохранить его простым. Спасибо за любой ответ.

ответ

1

Попробуйте jquery live events. Эти события позволяют присоединять события к dom при добавлении новых элементов. Например, я запускаю свою страницу, и эта страница вызывает ajax get/post, которая вставляет div с id «mydiv» в dom. Мое живое событие подключится к недавно добавленному div. Таким образом, вы можете сохранить все необходимые javascript для одной страницы в одной библиотеке. Проверьте это очень полезно.

+0

Спасибо. Очень полезная информация. – FlyingCat

1

Вы должны вызвать файл JS в странице включать сведения <input type='button' id='add' value='add'/>

Если не код $("#add").click(function(){ не найти элемент, называемый #add

+0

Я вижу. Спасибо за ответ. Я считаю, что ответ Джона тоже хорош. – FlyingCat