Javascript 使用window.open更改href
我使用jgfeed通过jquery检索提要。它工作得很好。 它显示所有的标题和链接 代码如下:Javascript 使用window.open更改href,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我使用jgfeed通过jquery检索提要。它工作得很好。 它显示所有的标题和链接 代码如下: $.jGFeed('http://www.link.org/feed', function(feeds){ if(!feeds){ alert('No network'); } for(var i=0;i<feeds.entries.length;i++){ var entry
$.jGFeed('http://www.link.org/feed',
function(feeds){
if(!feeds){
alert('No network');
}
for(var i=0;i<feeds.entries.length;i++){
var entry = feeds.entries[i];
var title = entry.title;
var link = entry.link;
var html = "<ul class='pageitem'><li class='textbox'><span class='header'>" + title + "</span></li><li class='menu'><a href='" + link + "'><span class='name'>Read more</span><span class='arrow'></span></a></li></ul>";
$("#feedContent").append($(html));
}
}, 20);
$.jGFeed('http://www.link.org/feed',
功能(提要){
如果(!feed){
警报(“无网络”);
}
对于(var i=0;i,因为您正在使用jQuery,所以可以为列表中的链接设置自己的事件处理程序
$('.pageitem').delegate('a', 'click', function(e) {
window.open( $(this).attr('href'), 'popup' );
e.preventDefault();
});
请注意,我们使用的是而不是$。单击()
。这是因为我们正在处理的
标记在页面加载上不存在。使用委托()
可确保列表中所有未来的
标记都获得事件处理程序。我建议保持href,以防窗口打开时出现问题
您只需将一个类添加到要附加到html字符串中的每个链接中,然后在附加该类后,向该类应用单击事件:
$.jGFeed('http://www.link.org/feed',
function(feeds){
if(!feeds){
alert('No network');
}
for(var i=0;i<feeds.entries.length;i++){
var entry = feeds.entries[i];
var title = entry.title;
var link = entry.link;
var html = "<ul class='pageitem'><li class='textbox'><span class='header'>" + title + "</span></li><li class='menu'><a href='" + link + "' class="external-link"><span class='name'>Read more</span><span class='arrow'></span></a></li></ul>";
$("#feedContent").append($(html));
$('.external-link').click(function() {
window.open($(this).attr('href'), 'My_Window', 'width=800,height=600');
return false;
});
}
}, 20);
$.jGFeed('http://www.link.org/feed',
功能(提要){
如果(!feed){
警报(“无网络”);
}
对于(var i=0;ivar html=“”+
“- ”+
“”+标题+“”+
“
”+
“ ”+
“
”;
当然,你想打开一个新窗口还是想打开一个新的弹出窗口?你想让你的
在一个新窗口中打开吗?不要使用live()
!即使是jQuery核心成员也会说不要使用它。它仍然存在只是因为遗留的原因。使用delegate()
相反。要慢得多。&&谢谢你的提示,我不知道live()。我已经相应地更新了。很好:)我认为你缺少了第一个属性tho。我相信你必须给它一个上下文来查找新元素(我认为它比live()
快的一个原因)哦,忘了提一下,第一个attr应该是这样的。委托(“#parentSelector”,“click”,function(){…})我现在得到了吗?我正在查看delegate()api页面上的示例,似乎他们首先有父对象,然后才有选择器。它是空的,不是新的。新建只会打开一个新窗口,然后重用该窗口不是很清楚。“new”听起来好像每次都需要一个新窗口,我建议:var w=window.open($(this.attr('href'),$(this.attr('target'),'width=800,height=600');返回w?false:true;
-所以我删除了通过href和target的答案
$.jGFeed('http://www.link.org/feed',
function(feeds){
if(!feeds){
alert('No network');
}
for(var i=0;i<feeds.entries.length;i++){
var entry = feeds.entries[i];
var title = entry.title;
var link = entry.link;
var html = "<ul class='pageitem'><li class='textbox'><span class='header'>" + title + "</span></li><li class='menu'><a href='" + link + "' class="external-link"><span class='name'>Read more</span><span class='arrow'></span></a></li></ul>";
$("#feedContent").append($(html));
$('.external-link').click(function() {
window.open($(this).attr('href'), 'My_Window', 'width=800,height=600');
return false;
});
}
}, 20);
var html = "<ul class='pageitem'>" +
" <li class='textbox'>" +
" <span class='header'>" + title + "</span>" +
" </li>" +
" <li class='menu'>" +
" <a href='" + link + "' target='new'>"; // <<-- Look here. Make
//this target unique if each link should open in its own page. use one
//target like "new" to open all links in one separate page.
html +=" <span class='name'>Read more</span>" +
" <span class='arrow'></span>" +
" </a>" +
" </li>" +
"</ul>";