我建議,這可能是因爲background-image
是永遠不會完全相等(===
)至(大概)圖像目錄http://www.infiniscale.com/beta/
的路徑。
如果你想簡單地隱藏這些.elemproduct
元素沒有background-image
似乎有點更容易使用:
function hideBox() {
var $eP = $('.elemproduct');
$eP.each(
function() {
if (!$(this).css('background-image') || $(this).css('background-image') == 'none') {
$(this).hide();
}
});
}
hideBox();
JS Fiddle demo。
編輯與在background
(或background-image
)財產空url()
充滿當前頁面的URL問題進行補償。這使得相當龐大的if
聲明,但它至少可以可靠地工作(就目前我可以告訴),這是對上述的改進。最新迭代:
function hideBox() {
var href = document.location;
var $eP = $('.elemproduct');
$eP.each(
function() {
var imgString = $(this).css('background-image');
var srcString = imgString.replace('url(','').replace(')','');
if (!imgString || imgString == 'none' || srcString == href) {
$(this).hide();
}
});
}
hideBox();
JS Fiddle demo。
編輯和修正上述中,以除去不必要的變量(
srcString
)及其多次調用
.replcace()
:
function hideBox() {
var href = document.location;
var $eP = $('.elemproduct');
$eP.each(
function() {
var imgString = $(this).css('background-image');
if (!imgString || imgString == 'none' || imgString.indexOf(href) > -1) {
$(this).hide();
}
});
}
hideBox();
JS Fiddle demo。
響應編輯從OP評論:
我試圖得到它的工作,但在Chrome瀏覽器一切都顯示,IE一切都是隱藏的。即使我看到你的代碼在jsfiddle下工作......我不理解所有事情,例如imgString.indexOf(href) > -1
。
的if
試驗三個條件:
!imgString
,如果沒有從.css()
方法的background-image
屬性返回字符串。
imgString == 'none'
,因爲如果沒有定義background-image
,jQuery(有時或可能總是)返回'none'。
imgString.indexOf(href) > -1
。這查看imgString
變量以查看它是否包含變量href
包含的字符串。如果找到字符串,則返回找到的位置;如果未找到,則返回-1
。
var string = "abcdef";
alert(string.indexOf('a')); // alerts: 0
JS Fiddle demo。
alert(string.indexOf('bc')); // alerts: 1
JS Fiddle demo。
alert(string.indexOf('ef')); // alerts: 4
JS Fiddle demo。
alert(string.indexOf('x')); // alerts: -1
JS Fiddle demo。
這是爲了檢查CSS中空的url()
不是簡單地被瀏覽器自動填充。
被指向的URL頁面,發現使用PHP,並得到由東西一點點更加尷尬比我想象的編輯後。
使用下面的控制檯(當然在Chromium)工作:
$('.elemproduct').each(
function() {
if ($(this).css('background-image') == 'url(' + document.location.toString().substring(0, document.location.href.toString().indexOf('index')) + ')') {
$(this).hide();
}
});
以上,在JS小提琴工作,並落實到hideBox()
功能:
// in real life use:
// var urlString = document.location.href;
var urlString = 'http://www.infiniscale.com/beta/index.php?id=48';
function hideBox() {
var href = document.location;
var $eP = $('.elemproduct');
$eP.each(
function(){
if ($(this).css('background-image') == 'url(' + urlString.substring(0,urlString.indexOf('index')) + ')'){
$(this).hide();
}
});
}
hideBox();
上述演示可在JS Fiddle!
背景圖像屬性可以用不同的方式寫入。嘗試檢查它是否包含路徑,而不是等於url(路徑) – galchen
任何[JS小提琴演示](http://jsfiddle.net/)重現此問題的機會? –
它可能會更好地爲您放置在CSS類的背景,然後使用jQuery的.hasClass() - 我知道這不是問題的答案,但它可能是你想要解決的問題。 (因此評論不是答案) –