我有一个电影列表,当我点击一个标题时,我希望它将从该电影标题的XML页面中提取的数据显示到一个新窗口。
我正在循环浏览xml文件以获取电影列表
$(xml).find('movie').each(function () {
//Adding the movie title.
$("body").append("<section class = 'list' id='m" + n + "'><p>" + $(this).attr("name") + "</p></section>");
例如,我的第一部电影是&#34;终结者2审判日&#34;
我的最后一次尝试是使用一个数组..但它仍然只为我点击的每个标题显示相同的标题,这是第一个,终结者。
$(xml).find('movie').each(function () {
//Adding the movie title.
$("body").append("<section class = 'list' id='m" + n + "'><p>" + $(this).attr("name") + "</p></section>");
//adding movie website link
$("#m" + n).append("<a href='" + $(this).find("website").text() + "'>" + $(this).attr("name") + "'s website</a> <br />");
//adding other movie info in new window
info.push(($(xml).find("movie").attr("name")));
$("#m" + n+" p").click(function () {
mWindow = window.open("", "", "width=500,height=500");
mWindow.document.write(info[info.length-1]);
});
n++
});
答案 0 :(得分:1)
更改
info.push(($(xml).find("movie").attr("name")));
到
info.push($(this).attr("name"));
...将循环中当前项的name属性插入到该数组中,而不是$(xml).find('.movie')
编辑:这是您可能正在寻找的不同方法:
$(xml).find('movie').each(function (i, elm) {
var $movie = $(elm),
$section,
movie = {
id: 'm' + id,
name: $movie.attr('name'),
website: $movie.find('website').text()
};
$section = $('<section class="list" id="' + movie.id + '"><p>' + movie.name + '</p><a href="' + movie.website + '">' + movie.name + '\'s website</a><br></section>');
$section.data('movie', movie);
$('body').append($section);
});
$('body').on('click', 'section.list p', function (e) {
var $section = $(e.target).closest('section.list'),
movie = $section.data('movie'),
popupText;
popupText = movie.name + ', ' + movie.website;
mWindow = window.open("", "", "width=500,height=500");
mWindow.document.write(popupText);
});
首先,它循环遍历$(xml)
,在其中为每部电影创建并附加section
。然后,使用.data()
在循环之后,它会绑定一个点击事件监听器,它会检测点击目标中最近的部分,抓取它的数据并做一些进一步的操作,比如打开弹出窗口popupText
希望它有所帮助。
答案 1 :(得分:0)
试试这个,我把它放在小提琴上
https://jsfiddle.net/Lg77ekoa/8/
简单的window.open()并从主页面向弹出窗口发送字符串。你可以发送任何东西,这只是一个例子
HTML
<a onclick="show1(this)" id="titanic">Titanic</a>
<br/>
<a onclick="show1(this)" id="Tropic Thunder">Tropic Thunder</a>
<br/>
<a onclick="show1(this)" id="Hangover">Hangover</a>
的Javascript
function show1(elem) {
var myWindow = window.open("", "", "width=200, height=100");
myWindow.document.body.innerHTML = $(elem).attr("id");
}
答案 2 :(得分:0)
我明白了。
info[n] = ($(this).attr("name")) + more information...
function cHandle(num) {
$("#m" + n + " p").click(
function () { mWindow = window.open("", "", "weight = 500, height=500"); mWindow.document.write(info[num]) }
)
}
cHandle(n);
现在n正在正确地传递给点击功能。