Javascript 访问DOM动态添加、getScript、ajax
我使用jQueryAjax动态读取页面上的上下文。但DOM的一部分是由ajax.done中的getScript在javaScript函数调用中加载的。但在加载新内容之后,我需要按类获取元素,并在下一个函数中使用它。不幸的是,我找不到在javaScript函数中创建的元素,也找不到使用jQuery getScript调用该函数的脚本 好的,我的代码:Javascript 访问DOM动态添加、getScript、ajax,javascript,jquery,ajax,Javascript,Jquery,Ajax,我使用jQueryAjax动态读取页面上的上下文。但DOM的一部分是由ajax.done中的getScript在javaScript函数调用中加载的。但在加载新内容之后,我需要按类获取元素,并在下一个函数中使用它。不幸的是,我找不到在javaScript函数中创建的元素,也找不到使用jQuery getScript调用该函数的脚本 好的,我的代码: $(document).ready(function() { $('.link').click(function(){ var
$(document).ready(function() {
$('.link').click(function(){
var subpage = $(this).attr('data-subpage');
var src = 'subpages/'+ subpage + '/' + subpage +'.php';
var script = 'subpages/'+ subpage + '/js/' + subpage +'.js';
$.ajax({
url: src,
context: document.body,
dataType: 'html',
success: function(responseText){
$('#text').html(responseText); // responseText has only container <div id="insideText"></div> that I use in one function and load there by html() several divs. One of this div has class 'translate'. I need it in function Translator
}
})
.done(function(){
$.getScript(script); // here I call script where I load several divs to #insideText
Translator($('.active').attr('data-lang')).getTranslation() // part of function have to find all div.translate, but can't find it if they're load in script call in getScript. And this is a problem.
})
})
})
$(文档).ready(函数(){
$('.link')。单击(函数(){
var subpage=$(this.attr('data-subpage');
var src='subpage/'+subpage+'/'+subpage+'.php';
变量脚本='subpage/'+subpage+'/js/'+subpage+'.js';
$.ajax({
网址:src,
上下文:document.body,
数据类型:“html”,
成功:函数(responseText){
$('#text').html(responseText);//responseText只有一个容器,我在一个函数中使用它,并通过html()几个div加载到那里。这个div中的一个有类“translate”。我需要在函数转换器中使用它
}
})
.done(函数(){
$.getScript(script);//这里我调用script,将几个div加载到#insideText
Translator($('.active').attr('data-lang')).getTranslation()//函数的一部分必须查找所有div.translate,但如果它们在getScript的脚本调用中加载,则无法找到。这是一个问题。
})
})
})
我希望,我把我的问题解释得很清楚。如果没有,请问,我会再试一次
有办法吗
//更新//
在这个脚本之后,getScript调用我仍然对第二个“完成”有问题:
const Presenter = function(){
var presented, show, fullDesc, cont;
presented = [
{
url: 'demo/colorsGame/',
name: 'Graj w kolorki!',
desc: 'Graj w kolorki! Wybierz taki sam kolor, w jakim napisana jest nazwa wylosowanego koloru. Spiesz się, czas ucieka coraz szybciej i szybciej. Uważaj, bo mózg może cię oszukać i uznać za ważniejsze to, co jest napisane, a nie to co widzisz. Zobacz ile punktów jesteś w stanie zdobyć zanim popełnisz trzy błędy. Ćwicz swoją koncentrację.'
},
{
url: 'demo/sampleUserProfile/',
name: 'Sample User Profil',
desc: 'Mała próbka możliwości reactJS. Wkonany z użyciem biblioteki reactJS, menadzera pakietów webpack oraz na środowisku nodeJS przykładowy profil użytkownika. Like-uj i obserwuj do woli, a jeśli chcesz, wypowiedz się pod profilem.'
}
];
show = function(url, desc, name) {
fullDesc =
"<a href ='" + url + "'>" +
"<h1 class='translate'>" + name + "</h1>" +
"</a>" +
"<div>" +
"<p class='translate'>" + desc + "</p>" +
"</div>";
cont =
"<div id='webmin' class='clearfix'>" +
"<div>" +
fullDesc +
"</div>" +
"<div>" +
"<iframe src='" + url + "' scrolling='no'>" +
"ups, twoja przeglądarka nie obsługuje ramek" +
"</iframe>" +
"</div>"+
"</div>";
return cont;
};
return {
show: show,
presented: presented
}
};
display = function(){
var len, url, name, desc;
len = Presenter().presented.length;
for(let i = 0; i <= len; i++){
url = Presenter().presented[i].url;
name = Presenter().presented[i].name;
desc = Presenter().presented[i].desc;
$('#insidetext.apps').append(Presenter().show(url, desc, name));
}
};
display();
const Presenter=function(){
var呈现、显示、完整描述、续;
提出=[
{
url:“demo/colorsGame/”,
姓名:“Graj w kolorki!”,
描述:“Graj w kolorki!Wybierz taki sam kolor,w jakim napisana jest nazwa Wylosowango koloru.Spiez się,czas ucieka coraz szybciej i szybciej.Uważaj,bo mżzg mo zukaći uznaćza Niezze to,co jest napisane,co.Zobacz ile punktów jestśyžyžconzyžzyžzyžzyžzyžzyžzyžzyžzyžzyžzyžzy38特雷克什。”
},
{
url:'demo/sampleUserProfile/',
名称:“示例用户profile”,
描述:“Mała próbka możliwości reactJS.Wkonany z użyciem biblioteki reactJS,menadzera pakietów网页包oraz naśrodowisku nodeJS przykładowy profil użkownika.像uj i obserwuj do woli一样,一个jeśli chcesz,wypowiedz siępod profilem。”
}
];
show=函数(url、描述、名称){
全称=
"" +
"" +
“”+desc+“
”+
"";
续=
"" +
"" +
全称+
"" +
"" +
"" +
“联合包裹公司,twoja przeglądarka nie obsługuje ramek”+
"" +
""+
"";
返回控制;
};
返回{
秀:秀,,
赠送:赠送
}
};
显示=函数(){
变量len、url、名称、描述;
len=Presenter().presented.length;
for(让i=0;igetScript
只是另一个ajax调用,返回一个xhr对象,该对象公开了done和fail方法。在尝试访问dom之前,请使用这些方法确保正确加载dom
$(document).ready(function() {
$('.link').click(function(){
var subpage = $(this).attr('data-subpage');
var src = 'subpages/'+ subpage + '/' + subpage +'.php';
var script = 'subpages/'+ subpage + '/js/' + subpage +'.js';
$.ajax({
url: src,
context: document.body,
dataType: 'html'
})
.done(function(responseText){
$('#text').html(responseText);
$.getScript(script).done(function() {
Translator($('.active').attr('data-lang')).getTranslation() ;
}
})
})
})
此外,您还应该实现.fail方法,以防ajax请求失败。getScript只是另一个ajax调用,返回一个xhr对象,该对象公开了done和fail方法。在尝试访问dom之前,请使用这些方法确保正确加载dom。不幸的是,它什么也不提供。第二个“done”中的内容不需要调用。即使我尝试一下console.log(“测试”),我不明白。啊,我知道为什么。这是因为你提供了一个成功参数,还附加了一个完成方法。使用其中一个或另一个。更新answershmm,问题似乎出在script.js上。我有几个脚本。现在加载它们中的大部分都没有问题,第二个“完成”效果很好。但是现在有一个脚本。所以,我更新了我的问题,我在这个脚本中使用iframe,可能这是一个问题。。。