Javascript 我如何在单击按钮时调用JQuery函数?
我有一个JQuery函数,通过使用JSON文件获取和显示一页图像。我希望在单击按钮时显示下一组图像,但这需要在请求url中添加一个短字符串,当我第一次运行脚本时,该字符串被找到并存储在一个var中。我需要再次调用这个JQuery函数,并将字符串var传递给它(下面代码中的lastId)。总的来说,我对JavaScript一窍不通,不知道该怎么做 以下是代码的完整版本:Javascript 我如何在单击按钮时调用JQuery函数?,javascript,jquery,function,Javascript,Jquery,Function,我有一个JQuery函数,通过使用JSON文件获取和显示一页图像。我希望在单击按钮时显示下一组图像,但这需要在请求url中添加一个短字符串,当我第一次运行脚本时,该字符串被找到并存储在一个var中。我需要再次调用这个JQuery函数,并将字符串var传递给它(下面代码中的lastId)。总的来说,我对JavaScript一窍不通,不知道该怎么做 以下是代码的完整版本: $(function runthis(un){ var lastId; un = typeof un !== 'un
$(function runthis(un){
var lastId;
un = typeof un !== 'undefined' ? un : "";
$('#domainform').on('submit', function(event){
event.preventDefault();
$('#content').html('<center><img src="img/loader.gif" alt="loading..."></center>');
//var lastId;
var domain = $('#s').val();
var newdomain = domain.replace(/\//g, ''); // remove all slashes
var requrl = "http://www.reddit.com/r/";
var getmore;
getmore = "?after=t3_"+un;
var fullurlll = requrl + domain + ".json" + getmore;
$.getJSON(fullurlll, function(json){
var listing = json.data.children;
var html = '<ul class="linklist">\n';
for(var i=0, l=listing.length; i<20; i++) {
var obj = listing[i].data;
var votes = obj.score;
var title = obj.title;
var subtime = obj.created_utc;
var thumb = obj.thumbnail;
var subrdt = "/r/"+obj.subreddit;
var redditurl = "http://www.reddit.com"+obj.permalink;
var subrdturl = "http://www.reddit.com/r/"+obj.subreddit+"/";
var exturl = obj.url;
var imgr = exturl;
var imgrlnk = imgr.replace("target=%22_blank%22","");
var length = 14;
var myString = imgrlnk;
var mycon = imgrlnk;
var end = mycon.substring(0,14);
myString.slice(-4);
var test1 = myString.charAt(0);
var test2 = myString.charAt(1);
var timeago = timeSince(subtime);
if(obj.thumbnail === 'default' || obj.thumbnail === 'nsfw' || obj.thumbnail === '')
thumb = 'img/default-thumb.png';
if(end == "http://i.imgur" ){
$("#MyEdit").html(exturl);
html += '<li class="clearfix">\n';
html += '<img src="'+imgrlnk+'" style="max-width:100%; max-height:750px;">\n';
html += '</li>\n';
html += '<div class="linkdetails"><h2><a href="'+imgrlnk+'" style="text-decoration: none; font-size:2em">'+title+'</a></h2>\n';
/*html += '<p class="subrdt">posted to <a href="'+subrdturl+'" target="_blank">'+subrdt+'</a> '+timeago+'</p>'; /*'+test1+test2+'*/
html += '</div></li>\n';
}
if (listing && listing.length > 0) {
lastId = listing[listing.length - 1].data.id;
} else {
lastId = undefined;
}
} // end for{} loop
htmlOutput(html);
}); // end getJSON()
}); // end .on(submit) listener
function htmlOutput(html) {
html += '</ul>';
$('#content').html(html);
}
});
$(函数runthis(un){
拉斯蒂德变种;
un=un的类型!=“未定义”?un:;
$('#domainform')。在('submit',函数(事件){
event.preventDefault();
$('#content').html('');
//拉斯蒂德变种;
变量域=$('#s').val();
var newdomain=domain.replace(//\//g',);//删除所有斜杠
var requrl=”http://www.reddit.com/r/";
var getmore;
getmore=“?after=t3_”+un;
var fullurll=requrl+domain+“.json”+getmore;
$.getJSON(fullUrll,函数(json){
var listing=json.data.children;
var html='\n';
for(var i=0,l=listing.length;i 0){
lastId=listing[listing.length-1].data.id;
}否则{
lastId=未定义;
}
}//结束{}循环
htmlOutput(html);
});//end getJSON()
});//在(提交)侦听器上结束
函数htmlOutput(html){
html+='
';
$('#content').html(html);
}
});
您当前执行函数运行的方式永远不会为该函数留下句柄。这意味着它实际上只存在于document.ready(即$(function())的快捷方式)的上下文中
您要做的是保留对该函数的引用,以供以后使用
如果您希望能够将其直接放入onclick='
中,则需要将函数放入全局
例如:
这声明了一个名为myFunction的函数,然后告诉jQuery在DocumentReady上执行它
“全局”通常被认为是相当顽皮的编辑。一个稍微好一点的选项是将单击指定给javascript中的按钮
例如:
这意味着函数myFunction只存在于文档的作用域中。就绪,不在全局作用域中(并且您根本不需要
onclick=''
)在某些事件上添加侦听器,您可以使用live('click',function(){})
例如:
<div id="my-button">some content</div>
<script type="text/javascript">
$('#my-button').live('click',function(){
//your code
})
</script>
一些内容
$(“#我的按钮”).live('单击',函数()){
//你的代码
})
您想稍后执行runThis()吗?@Luke是的,对于按钮点击之类的操作。live()已经被弃用了一段时间。是的,但我仍然使用它,因为我的页面上有动态对象。如果我要传递变量,我会简单地将var myFunction=function(lastId){}放在这里并调用myFunction(lastId)?如果您想通过单击$(“#我的按钮id”)传递参数,那么就可以了;查看本文:
$(function(){
var myFunction = function() { /*Stuff here*/}
myFunction(); //call it here
$('#my-button-id').click(myFunction);//attach a click event to the button
)
<div id="my-button">some content</div>
<script type="text/javascript">
$('#my-button').live('click',function(){
//your code
})
</script>