2014-01-05 44 views
0

我有一些div和一個按鈕。 Divs有zozo [j]屬性。如何在div html屬性上設置過濾器

當我點擊按鈕時,我想要設置它們的ID,但不是所有的div,只有那些有j > k。實際上我想用一個過濾器。

<div zozo="sim [0]"></div> 
<div zozo="sim [1]"></div> 
<div zozo="sim [2]"></div> 
    . 
    . // and some div else 
    . 
var k = 1; 

我知道下面的代碼是錯誤的,但我想是這樣的:

$("div [zozo='sim ["+ > = k + "]' ]").attr('id' , k+1); 
+2

你的問題不明確。發佈無效的語法無濟於事。 – elclanrs

+0

爲什麼不明確。我想選擇有sim [j]的div。但j> = 1。 – user3154402

回答

2

好了,所以你要在這裏做的是疊代的每個元素,然後做你的計算對每個人的價值進行個別分析。你在談論基於一些算術計算的選擇器 - 我不相信這是存在的。

這裏是我會怎麼做:

var k = 1; 
$("div[zozo^='sim']").each(function(){ 
    var value = $(this).attr("zozo").match(/(\d+)/)[1]; // remove all except the number 
    value = parseInt(value); // convert it into an actual number 
    if (value >= k){ 
    // if a condition is met - we update the attribute of the current element 
    $(this).attr("id", (value + k)); 
    } 
}); 

我使用jQuery的"attribute starts with" selector here,對具有以字符串「SIM」開始zozo類值的所有元素相匹配。


注意,在你的榜樣你想要的id屬性設置爲k+1。這將始終保持相同的數字,因此您將使用相同的id設置多個元素。你不想那樣做。在我的例子中,我確定每個id屬性都是唯一的。

退房this demo,你會發現除第一個紅色框外,其他所有人都設置了id

0

這樣的事情?警告,醜陋的代碼

$('#parentdiv > div').each(function() { 
    var $that = $(this); 
    var zozo = parseInt($that.attr('zozo').replace('sin[', '').replace(']', '')); 
    if (zozo >= k) 
     $that.id = k + 1; 
}); 
+1

'$ .each()'在ID選擇器上? – MackieeE

+0

@MackieeE:很好。現在刪除 – OptimusCrime

+0

謝謝@optimusCrime – user3154402

2

我認爲你正在嘗試做的:

$("div[zozo^=sim]").attr('id' , function(i){ //Use attribute startswith seletor 
    //return i+1; //return index + 1 as the id 
    return +$(this).attr('zozo').match(/(\d+)/).pop() + 1; 
}); 

或者只設置一個共同的類名來所有這些因素和使用類選擇

$("div.myClass").attr('id' , function(i){ //Use attribute startswith seletor 
    return i+1; //return index + 1 as the id 
}); 

還記得即zozo不是一個有效的屬性,它與data-*前綴會更合適。

Demo

0

假設數據ZOZO的值總是相同的格式,並假設我理解正確你的問題,這應該工作。當然,你會想要使用更具體的選擇器。

$('div').click(function() { 
    var myK = $(this).attr('data-zozo'); 
    myK = myK.charAt(5); 
    myK = parseInt(myK); 

    if (myK >= 1) { 
     $(this).attr('id',myK + 1); 
    } 
}); 

http://jsfiddle.net/isherwood/5g7yU/