我想在超链接的单击事件上有条件地显示JQuery对话框.
我有条件,例如在条件1上打开一个JQuery对话框,如果不满足条件1,则导航到由'href'标签引用的页面,该标签的点击事件有问题.
我能够在链接的点击事件上调用一个函数.此函数现在通过执行另一个URL(执行我的Spring控制器并返回响应)来检查所述条件.
所有的作品都只有window.open被弹出窗口拦截器阻挡.
$('a[href*=/viewpage?number]').live('click', function(e) {
e.preventDefault();
redirectionURL = this.href;
pageId= getUrlVars(redirectionURL)["number"];
$.getJSON("redirect/" + pageId, {}, function(status) {
if (status == null) {
alert("Error in verifying the status.");
} else if(!status) {
$("#agreement").dialog("open");
} else {
window.open(redirectionURL);
}
});
});
Run Code Online (Sandbox Code Playgroud)
如果我e.preventDefault();从代码中删除,popoup阻止程序不会阻止页面,但是对于condition1,它会打开对话框并打开'href'页面.
如果我解决了一个,它会为另一个人带来问题.我无法同时兼顾两种情况.
你能帮我解决这个问题吗?
一旦这个问题得到解决,我还有另外一个问题需要解决,即导航对话的OK事件:)
我正在查看添加到jQuery 1.7的新内容,我看到他们现在有jQuery.Callbacks()http://api.jquery.com/jQuery.Callbacks/.
该文档向您展示了如何使用jQuery.callbacks(),但没有任何适用于我何时想要使用它们的示例.
看起来你可以在回调列表中添加/删除回调,你可以执行jQuery.callbacks().fire(args),但这只会触发该列表中的所有回调.也许我错过了一些东西,但这似乎没有用.
在我第一次看到这个新功能时,我认为你可以将它与键/值对一起使用.然后,这将提供一种在应用程序的单个位置管理回调函数的简单方法.就像是
$.callbacks.add("foo", myFunction);
Run Code Online (Sandbox Code Playgroud)
然后例如,如果我想在函数结束时调用该回调,我可以做类似的事情
$.callbacks().fire("foo", args);
Run Code Online (Sandbox Code Playgroud)
但是,它看起来不像你可以触发特定的回调,你只能使用给定的参数或它们都不会触发所有这些回调.
我看到的最接近的事情就是能够给.fire()函数一个上下文来设置"this"属性
.fireWith(context, args)
Run Code Online (Sandbox Code Playgroud)
但这也没有多大帮助.
我误解了文档吗?
如果这是所需的功能,那么有用的示例是什么.
如果您选择要使用jQuery进行动画处理的类或元素集合:
$('.myElems').animate({....});
Run Code Online (Sandbox Code Playgroud)
然后还使用回调函数,最终会有很多不必要的animate()调用.
var i=1;
$('.myElems').animate({width:'200px'}, 200, function(){
//do something else
$('#someOtherElem').animate({opacity:'1'}, 300, function(){
if (i>1) console.log('the '+i+'-th waste of resources just finished wasting your resources');
i++;
});
});
Run Code Online (Sandbox Code Playgroud)
可以说这只是糟糕的代码和/或设计 - 但是我能做些什么,既避免了许多animate()调用,只有其中一个使用回调,并且需要执行大量不必要的回调并且使用我的代码/预期行为?
理想情况下,我只能编写一个只能运行一次的"一次性"回调 - 否则可能有一种有效的方法来测试某些东西是否已经被jQuery动画了?
示例:http://jsfiddle.net/uzSE6/(警告 - 这将显示大量警报框).
我似乎是徒劳无功地将其他参数传递回我为成功的ajax调用创建的成功回调方法.一点背景.我有一个页面,其中包含许多动态创建的文本框/选择框对.每对具有动态分配的唯一名称,例如name ="unique-pair-1_txt-url"和name ="unique-pair-1_selectBox",则第二对具有相同但前缀不同.
为了重用代码,我制作了回调来获取数据和对selectbox的引用.但是当回调被触发时,对selectbox的引用将返回为"undefined".我在这里读到它应该是可行的.我甚至尝试过利用'上下文'选项,但仍然没有.这是我尝试使用的脚本块:
<script type="text/javascript" language="javascript">
$j = jQuery.noConflict();
function getImages(urlValue, selectBox) {
$j.ajax({
type: "GET",
url: $j(urlValue).val(),
dataType: "jsonp",
context: selectBox,
success:function(data){
loadImagesInSelect(data)
} ,
error:function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
}
function loadImagesInSelect(data) {
var select = $j(this);
select.empty();
$j(data).each(function() {
var theValue = $j(this)[0]["@value"];
var theId = $j(this)[0]["@name"];
select.append("<option value='" + theId + "'>" + theValue + "</option>");
});
select.children(":first").attr("selected", true);
}
</script>
Run Code Online (Sandbox Code Playgroud)
从我所读到的,我觉得我很接近,但我不能把手指放在缺失的环节上.请帮助你典型的忍者隐身方式.TIA
****更新****尼克是一个真正的忍者.他们应该为此发明一个新的徽章!他下面的回答就是诀窍.正如他提到的那样具体是1.4,但我可以忍受.这是我的最终代码,适用于任何Ninjas的培训(以及我未来的参考):
<script type="text/javascript" language="javascript">
$j = jQuery.noConflict(); …Run Code Online (Sandbox Code Playgroud) DatePicker有一个内部函数,_adjustDate()我想在之后添加一个回调函数.
这就是我目前正在做的事情.基本上,只需用自身替换功能定义,再加上新操作.这会影响所有日期选择器,我也不确定是否需要.
$(function(){
var old = $.datepicker._adjustdate;
$.datepicker._adjustDate = function(){
old.apply(this, arguments);
// custom callback here
console.log('callback');
};
});
Run Code Online (Sandbox Code Playgroud)
_adjustDate是在下一个/上个月点击期间调用的内容.该函数有三个参数.我很好奇是否有更好的方法来添加回调.
我希望最终结果看起来像这样; afterAjustDate回调句柄在哪里:
$('#datepicker').datepicker({
showButtonPanel: true
, afterAdjustDate: function(){ $(this).find('foo').addClass('bar'); }
});
Run Code Online (Sandbox Code Playgroud)
onChangeMonthYear不是可接受的事件替代,也不是live()/ delegate()(不在IE中工作)绑定选项.
这来自于在选择月份后应用类/操作元素的需要.更改月份会重新创建日历中的元素; 执行此操作时,jQueryUI不够智能,无法继承类更改.因此,我需要在更改日期后进行回调.
javascript jquery jquery-ui jquery-callback jquery-ui-datepicker
假设我有三个div,并且我希望每个div都完成前一个动画.目前,我写这个:
$('div1').fadeOut('slow', function() {
$('div2').fadeOut('slow', function() {
$('div3').fadeOut('slow');
});
});
Run Code Online (Sandbox Code Playgroud)
这是丑陋的,但可管理.
现在想象一下,我有10种不同的动画需要在不同的元素上一个接一个地发生.突然,代码变得如此笨重,以至于管理起来非常困难......
这是我想要做的伪代码:
$('div1').fadeOut('slow' { delay_next_function_until_done: true } );
$('div2').fadeOut('slow' { delay_next_function_until_done: true } );
$('div3').animate({ top: 500 }, 1000 );
Run Code Online (Sandbox Code Playgroud)
我该如何实现这一目标?
我正在向App Engine应用程序发出一些GET请求,在Chrome中进行测试.虽然我可以在javascript控制台中看到一些调用导致500服务器错误,但我似乎无法在我的jQuery代码中发现捕获此错误,尽管读取了许多类似的SO线程.我知道它表示服务器端错误,但我仍然希望能够从我的javascript中捕获这样的错误.
我需要捕获错误,以便我可以计算响应的数量(成功或其他),并在收到所有呼叫响应时触发另一个功能.
Chrome控制台输出:
GET http://myapp.com/api?callback=jQuery12345¶ms=restOfParams 500 (Internal Server Error)
Run Code Online (Sandbox Code Playgroud)
我的电话:
function makeCall() {
var count = 0;
var alldata = $('#inputset').val();
var rows = alldata.split('\n');
var countmatch = rows.length;
for (i=0;i<rows.length;i++) {
data["param"] = rows[i]["val"];
$.ajax({
url: apiUrl,
type: 'GET',
data: data,
dataType: 'jsonp',
error: function(){
alert('Error loading document');
count +=1;
},
success: function(responseJson) {
count +=1;
var res = responseJson.results;
if (count == countmatch) {
allDoneCallback(res);
}
},
});
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了以下一些方法:
添加:
statusCode: {500: function() {alert('err');}}
Run Code Online (Sandbox Code Playgroud)
打电话. …
我正在建立一个小脚本来动画列表.这是我的html结构:
<ul>
<li class="slider"> Item-1 </li>
<li class="slider"> Item-2 </li>
<li class="slider"> Item-3 </li>
...
<li class="slider"> Item-13 </li>
<li class="slider"> Item-14 </li>
<li class="slider"> Item-15 </li>
</ul>
<button> Next </button>
Run Code Online (Sandbox Code Playgroud)
我一次只显示四个li,"下一个"按钮淡出显示的四个li et fade接下来的四个.但是,这些趋势同时适用于两者.我试图在第一次淡入淡出时使用回调函数,但我无法使其工作.
这是脚本:
$('li:gt(3)').css('display', 'none');
//Define the interval of li to display
var start = 0;
var end = 4;
//Get the ul length
var listlength = $("li").length;
$("button").click(function() {
// FadeOut the four displayed li
$('ul li').slice(start,end).fadeOut(500, function(){
// Define the next interval of four li to …Run Code Online (Sandbox Code Playgroud) 我很难概念化jQuery中究竟回调或挂钩的内容.他们似乎被混为一谈,但我不知道他们之间的区别.
根据我对其他关于回调的帖子的理解,像这样,回调只是一个函数A,你传递给另一个函数B,一旦B完成就调用A. (这可能是完全错误的,如果是这样,请纠正我).
除了声明"你应该使用钩子/回调"之外,我真的对钩子没有任何想法.有些东西让我怀疑他们是那么相似......
Javascript代码,使用jQuery 1.7:
$( function() {
$.get('/ajax_dummy', function() { alert('foo'); })
});
Run Code Online (Sandbox Code Playgroud)
使用Firebug,我可以看到HTTP GET请求已发送,并返回代码为200的"hello world"响应,因此一切似乎都很好.但回调永远不会被调用.
我不知道出了什么问题; 这应该是这么简单吧?
jquery ×10
jquery-callback ×10
javascript ×2
jquery-ui ×2
callback ×1
html5 ×1
jquery-1.7 ×1
window.open ×1