2014-09-05 16 views
0

我使用jQuery事件代理來獲取此標記上的單擊事件(el包含多個checkboxContainer s,這就是爲什麼我想將代理事件.checkboxContainer委託給父el。點擊可能發生在.checkboxContainer或任何它的children):使用jQuery事件代理髮現e.target時出錯

<div class="checkboxContainer" id="equi-select"> 
    <span role="checkbox" class="checkboxSpan "> 
     <div class="blankDiv" style="display: block;"> 
      <img class="blankImg" src="http://maps.gstatic.com/mapfiles/mv/imgs8.png"> 
     </div> 
     </span> 
     <label class="checkboxLabel">Equipment</label> 
    </div> 

這是我的jQuery代碼:

el.on("click",".checkboxContainer",function(e){ 
    var $parent; 
    if($(e.target).hasClass(".checkboxContainer")) 
     $parent=$(e.target); 
    else 
     $parent=$(e.target).parents(".checkboxContainer").eq(0); 
    var res=$parent.attr("id"); 
    var objtype=res.substring(0,4);//error here 
    var $blankDiv=$parent.find(".blankDiv"); 
    console.log($blankDiv.css("display")); 
    if($blankDiv.css("display")==="none") 
    { 
     console.log(objtype); 
     $blankDiv.css("display","block"); 
     //make ajax requests to get data from server 
    } 
    else 
     $blankDiv.css("display","block"); 
}); 

這是錯誤:

Uncaught TypeError: Cannot read property 'substring' of undefined 

如何改進我的活動的定位?

+1

你知道,而不是'e.target'然後檢查類/父母類,你可以使用'this'這將是元素? – 2014-09-05 14:08:43

+0

@ Karl-AndréGagnonel包含多個'checkboxContainer's,這就是爲什麼我想將'.checkboxContainer'上的事件委託給父'el'的原因。點擊可能發生在'.checkboxContainer'或它的任何子節點上。 – vamsiampolu 2014-09-05 15:32:19

+0

這不是我的觀點。我的意思是你可以做'var $ parent = $(this);'並跳過下面的'if ... else ...'! – 2014-09-05 15:34:26

回答

0

添加toString()方法,以行becomming

var res=$parent.attr("id").toString(); 
相關問題