2011-12-16 87 views
0
var left=10; 
var right=50; 
$("#leftori").attr("id",left); 
$("#rightori").attr("id",right);//change the id 

$(document).delegate('div[id^='+left+']', 'mouseenter',function() { 
    alert("left ok!"); 
    var newleft=left+1; 
    $("#"+left).attr("id","newleft"};//change the id 
    left=newleft; 
} 
$(document).delegate('div[id^='+right+']', 'mouseenter',function() { 
    alert("right ok!"); 
    var newright=right+1; 
    $("#"+right).attr("id","newright"); 
    right=right+1; 
} 

<body> 
<div id="leftori" class="div01"></div> 
<div id="rightori" class="div01"></div> 
</body> 

的問題是:我可以動態委託變量id並委託多個變量「id」與jQuery一起使用函數嗎?

  1. 我如何可以委託動力學「ID」的新的div它改變了id屬性在第二MouseEnter事件?
  2. 我想將選擇器與id^=leftid^=right組合在同一個委託函數中。任何方法都可以做到嗎?例如:

    $(document).delegate('div[id^='+left+']' || 'div[id^='+right+']' , 'mouseenter',function() {...}

但它不能很好地工作......我怎樣才能解決,或沒有其他方法,但在兩個委託功能寫?

回答

1

我建議你不要更改任何DOM元素的ID - 有更好的方法來保持一個DOM元素的「數據」 ....

怎麼是這樣的:

HTML:

<div id="container"> 
    <div id="leftori" class="left"></div> 
    <div id="rightori" class="right"></div> 
</div> 

的JavaScript:

var left=10; 
var right=50; 
// store the data 
$("#leftori").data("num",left); 
$("#rightori").data("num",right); 

$('#container').on('mouseenter','div',function() { 
    // update the data on mouseenter 
    if ($(this).hasClass('left')){ 
     console.log('left'); 
     left++; 
     $(this).data('num',left); 
     console.log(left); 
     // or console.log($(this).data('num')); to access the new number 
    } else if($(this).hasClass('right')) { 
     console.log('right'); 
     right++; 
     $(this).data('num',right); 
     console.log(right); 
     // or console.log($(this).data('num')); to access the new number 
    } 
}); 

櫃面你不知道 - console.log命令將輸出記錄到調試器的瀏覽器JavaScript控制檯(firebug)。

文檔

  • on() - >中的jQuery 1.7替代代表
  • data() - >上的DOM元素存儲信息
  • hasClass() - >檢查DOM元素具有特定的類

工作示例:http://jsfiddle.net/8RhbB/1/

+0

感謝您的真誠幫助!這是一項非常好的工作,效果非常好!非常感謝!我將嘗試研究Web上的控制檯使用情況。謝謝! – 2011-12-17 03:38:00