为什么首先单击文档空白处的任何位置启动代码,而不是单击超链接,以及为什么打开了太多选项卡
Why first click anywhere in empty space in document initiate the code instead of clicking on hyperlink and why too many tabs open?
我在移动应用程序中有RSS提要(RSS页面)列表。我想在点击后打开每个提要链接,在不同的选项卡中(在Android中),在iOS中打开_blank。下面的代码对我来说很好。
第一个问题是我需要在rss页面的空白处单击一次,然后它就可以工作了;否则,应用程序将自己替换为外部超链接网页。
第二期我点击rss页面或rss链接中任意位置的次数;在下一次rss点击时,它会打开这么多选项卡。(例如,我在页面的空白处点击了3次,已经访问了2次rss链接;在下一次点击hyberlink时,它试图打开5个选项卡)。
index.html
<script>
$(document).click(function(e){
$('a').click(function(){
var myurl= $(this).attr('href');
if(myurl.indexOf('/') > -1)
{
//alert('linked found');
if (typeof navigator !== "undefined" && navigator.app)
{
navigator.app.loadUrl(myurl, {openExternal: true});
}
else
{
window.open(myurl, "_blank");
}
myurl='';
return false;
}
});
});
$(document).ready(function (){
$("#btnnewgrant").click(rssfeedbtn);
});
</script>
HTML:
<div data-role="page" id="rssfeed">
<div data-role="header">
<h1>Grants New Opportunity List by Agency</h1>
</div>
<div data-role="content">
<div class="myfeedheading">Grants New Opportunity </div>
<div id="busy1" style="color:#000000"><img src="ajaxloader.gif"></img>
</div>
<div id="myfeeddiva" class="myfeed"></div>
</div>
<div>
feed.js
function rssfeedbtn()
{
$('#myfeeddiva').empty();
$.mobile.changePage("#rssfeed", {reverse:false, transition:"slide"});
var rssurl='http://www.ddd.ddd/rss/asdd.xml';
$.get(rssurl, function(data) {
var $xml = $(data);
var mytext="";
$xml.find("item").each(function() {
mytext+='<a href="';
mytext+=$(this).find("link").text();
mytext+='">';
mytext+=$(this).find("title").text();
mytext+='</a>';
mytext+='<br>';
mytext+=$(this).find("pubDate").text();
mytext+='<br>';
mytext+='<br>';
});
$('#busy1').hide();
$('#myfeeddiva').append(mytext);
});
}
您可以在附加到文档的另一个单击处理程序中附加单击事件处理程序。因此,当您单击任何位置时,都会在链接上附加一个处理程序。你可以有任何数量的处理程序,所以如果你在任何地方点击10次,那么你的链接上就会有10个处理程序,代码在点击链接时会运行10次。
您需要更改
$(document).click(function(e){
至
$(document).ready(function(){
或更短的
$(function(){
编辑:如果你的链接是动态创建的,那么你需要使用.on而不是.click.
代替:
$('a').click(function (e) {
使用
$('body').on('click','a',function (e) {
相关文章:
- 单击和dblclick在同一个html上传递不同的parentNodes.为什么?
- 为什么当我单击X时,所有项目都会从我的Backbone.js视图中删除
- 单击选项卡时,为什么不在每次单击时切换
- 为什么jQuery下拉列表需要单击两次
- 为什么不'加载$(document.ready(function)后,单击“工作”
- 为什么在文本框内按回车键,单击第一个按钮并提交表单
- Rails-jQuery 为什么我必须单击两次才能显示 jQuery 效果
- 为什么无法单击按钮
- 为什么在页面上单击的先前链接的文本显示在 AJAX 请求中
- 为什么单击未标记为提交的按钮会导致提交表单
- 为什么单击时的关键帧动画只触发一次
- 为什么单击一个按钮会影响 jQuery Ajax 中的所有按钮
- 为什么单击处理程序被调用两次
- 为什么单击链接会转到页面顶部
- 为什么单击第二个项目后,此单击功能不起作用
- 为什么单击Go按钮后文本字段和按钮会消失
- 为什么单击事件不能在span上工作,而可以在a上工作?
- 为什么单击事件不能通过停止鼠标down/鼠标up来停止?
- 为什么单击后无法取消选中此复选框
- 为什么单击按钮时对话框未打开