jQuery .each loop string or object
为什么这不起作用?
1 2 3 4 5 6 | $( ["blog","user","forum"] ).each(function(num,opt) { if ( window.location.pathname.indexOf(opt) != -1 ) { $('#rb-' + opt).attr('checked','checked'); return false; } }); |
当我输入
---更新---
我刚刚看到HTML通过Ajax被写入页面,并在
如果页面没有完全加载,并且
1 2 3 4 5 6 7 8 | $(document).ready(function(){ $( ["blog","user","forum"] ).each(function(num,opt) { if ( window.location.pathname.indexOf(opt) != -1 ) { $('#rb-' + opt).attr('checked','checked'); return false; } }); }); |
解决方案:HTML内容还没有写入页面,所以现在我们等待Ajax请求完成,然后调用函数更新select值,就像这样……
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // apply checked to the selected element function setAsChecked() { $.each(["blog","user","forum"], function(num,opt){ if (window.location.pathname.indexOf(opt) != -1) { $('#rb-' + opt, '.radio_menu').attr('checked','checked'); return false; } }); } // $('.radio_menu').ajaxStop(function(){ // setAsChecked(); // }); // UPDATE! ajaxStop() catches all our ajax events - not cool. Instead, use when $.when( $.ajax("") ).done(function(){ setAsChecked(); }); |
也许这会让别人头疼!
---编辑---
被警告!当与cakephp一起使用时,这个解决方案会引起严重的头痛。当我们在页脚中调用这个函数时,布局就消失了。
查看此线程:cakephp后退和前进按钮上没有布局
正如评论中已经提到的,
另外,您可能希望添加一个
如果您想知道路径名中存在哪些文本,可以使用:
1 2 3 4 5 6 7 | var isPresent = []; $( ["blog","user","forum"] ).each(function(num,opt) { if ( window.location.pathname.indexOf(opt) != -1 ) { $('#rb-' + opt).attr('checked','checked'); isPresent.push(opt); } }); |
如果只想知道路径名中是否存在一个文本:
1 2 3 4 5 6 7 | var isAtLeastOneIsPresent = false; $( ["blog","user","forum"] ).each(function(num,opt) { if ( window.location.pathname.indexOf(opt) != -1 ) { $('#rb-' + opt).attr('checked','checked'); isAtLeastOneIsPresent = true; } }); |