我有一些我可以用.click()函数选择的元素,它们会突出显示.上面有菜单,有一些动作.我想点击任何元素而不是菜单时取消突出显示.
结构体:
<body>
<div id="menu">
</div>
<div id="elements">
/* selectable elements here */
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
可执行示例
$().ready(function(){
$("#elements a").click(function(){
$(this).css('color', 'red');
return false;
});
$(document).click(function(e) {
if ( $(e.target).closest('#menu').length === 0 ) {
$("#elements a").css('color', 'blue');
}
});
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="menu">
<a href="#">Menu 1</a>
<a href="#">Menu 2</a>
<a href="#">Menu 3</a>
</div>
<div id="elements">
<a href="#">Element 1</a>
<a href="#">Element 2</a>
<a href="#">Element 3</a>
</div>
<div>
Click any element to highlight it. Click anywhere to reset highlighting. Click menu to …Run Code Online (Sandbox Code Playgroud)我无法理解为什么重定向依赖于RewriteRule(而不是RewriteCond).
我的.htaccess:
Options +FollowSymLinks +SymLinksIfOwnerMatch
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ true.txt
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ false.txt
</IfModule>
Run Code Online (Sandbox Code Playgroud)
根文件夹包含:
true.txt(包含'true')
false.txt(包含'false')
test.txt(包含'test')
如果我试图打开,test.txt我会得到true,如果我试图打开,nonexist.txt我true也会得到.
现在我改变了我的.htaccess:
...
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ $1
...
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试打开,test.txt我会得到test,如果我试图打开nonexist.txt我得到false.
更新:感谢您的回答,我理解它是如何工作的,但仍然存在一个问题.如果我尝试在另一个目录中检查'if file exists',它总是会返回false.
/files/test.txt
/script/.htaccess
/script/false.txt
/script/true.txt
现在我的.htaccess看起来像
RewriteCond %{REQUEST_FILENAME} .*(true|false).*$
RewriteRule .* - [S=2]
RewriteCond %{DOCUMENT_ROOT}/files/%{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ true.txt [L]
RewriteCond %{DOCUMENT_ROOT}/files/%{REQUEST_FILENAME} …Run Code Online (Sandbox Code Playgroud)