2015-08-27 241 views
0

所以我見過幾篇文章解釋如何在屬性選擇中使用一個變量值。即(其中JS事件指的是DIV(使它$(本):Jquery [屬性]選擇器

HTML

<div id="item1"></div> 
<div id="item1" style="display: none;"></div> 

JS

var find = $(this).attr("id") 
$('div[id="'+find+'"]').show(); 

但我想知道如何在jquery選擇器中使用一個變量來查找與變量值類似的字符串,即從上面的示例中查找一個元素,但查找「#item1div」,其中事件目標仍然是「#ite M1"

HTML

<div id="item1"></div> 
<div id="item1div" style="display: none;"></div> 

JS

var find = $(this).attr("id") 
$('div[id="'+find+"div"'"]').show(); // incorrect syntax 

所以我的問題是:如何糾正上面的語法以包括屬性的附加字符串檢查?

對於如何添加編譯變量值和顯式字符串的字符串的正確語法,我找不到任何引用,然後檢查它是否爲x屬性的值。

我知道我可以在這裏使用[id*="'+find+'"],因爲備用ID包含與基本ID相同的字符,但我想知道如何根據第一個ID指定特定的其他ID。例如,如果我有#項目1,#item1div和#item1img,我怎麼能用一個事件上的「#物品1」找到屬性值等於「item1div」和/或「item1img」

編輯:我也剛剛意識到我可以只使用[id|="'+find+'"],如果我用連字符相應地命名div,但又不能解決具有不同結尾的id(或連字符後面出現的不同字符串)

+1

您應該使用ID選擇器'$('#'+ find).show()'而不是'$('。Divs [id =''+ find +'「]')。show();'。所以你可以使用'$('#'+ find +'div')'在第一部分查找'#item1div'或任何動態的東西。注意:你提到的不正確是因爲缺少'+' - 它應該是'$('div [id =''+ find +「div」** + **'「]')。show();' –

+0

這個問題很不清楚。你想做什麼?做一個通配符搜索? – taesu

+0

這裏有一些想法: http://stackoverflow.com/questions/13541898/how-can-i-select-an-element-by-id-with-jquery-using-regex http:// stackoverflow .com/questions/190253/jquery-selector-regular-expressions – eaCe

回答

0

$('div[id="'+find+"div"'"]')無效的Javascript語法:

$(   // jQuery function 
'div[id="' // String 
+ find  // Add variable 
+ "div"  // Add String 
'"]'  // Unexpected string! - Error 

一個例子的有效語法爲:

$('div[id="'+find+'div"]') 

然而,因爲它是一個id,你可以使用id選擇器來代替:

$('div#'+find+'div') 
+0

這是非常有幫助的大多數人都評論和回答。但是我真的很感謝我的語法在什麼地方做了什麼,哪裏出錯了。我每天都在學習更多的JavaScript,有時我覺得我的語法很接近,但不能完全弄清楚我錯過了什麼或者什麼都沒有。此外,爲了安撫javascript專家,我現在試圖使用正確的'('#'+ var +)'來選擇ID - 我沒有意識到這被用作專門用於ID的選擇器。難怪我無法找到任何關於'[id =「'再次感謝。 –

+0

@RobertH兩種方式[應該工作](http://jsfiddle.net/c3j8zLww/2/)。 '#'語法只是更短,通常更易於閱讀。也有微妙的差別;如果你的選擇器只使用'#'(例如'$(「#someId」)'),那麼選擇器引擎可以優化它,它只會檢索第一個實例。 – Stryner

0

問題很不清楚,但我認爲您的問題歸結爲:

問題:如何搜索所有以字符串開頭的元素x

一個:要獲得開始與所有元素 「物品1」,你應該使用:

$("[id^=item1]")

+0

對不起,我試圖包含所有的細節和事情,我認爲試圖清楚問題的解決方式有多深。 問題歸結爲如何正確使用:'$('div [id = 「 '+找到+ 」DIV「'」]')顯示(); //不正確的語法「 在屬性檢查中輸入變量的值,但然後在該字符串中添加一些與變量等同的內容(如將」div「添加到」item1「) –

0

您應該使用ID選擇像下面找到ID的元素,

$('#' + find).show(); 

要找到item1div或動態的第一部分 - $('#' + find + 'div')

注意:您提到的不正確的語法是因爲缺少+ - 它應該是

//      V-- you missed this 
$('div[id="'+find+"div"+'"]').show(); 
0

要明確的字符串添加到ATTR值,你可以寫在格的ID的情況下itemdiv如下

$('[attr="'+attrVal+'extraString"]') 

對於evample

var item1ID = $('#item1').attr('id'); // item1 
$('[id="'+item1ID+'div"]')    // valid selector to select #item1div