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
如何改進我的活動的定位?
你知道,而不是'e.target'然後檢查類/父母類,你可以使用'this'這將是元素? – 2014-09-05 14:08:43
@ Karl-AndréGagnonel包含多個'checkboxContainer's,這就是爲什麼我想將'.checkboxContainer'上的事件委託給父'el'的原因。點擊可能發生在'.checkboxContainer'或它的任何子節點上。 – vamsiampolu 2014-09-05 15:32:19
這不是我的觀點。我的意思是你可以做'var $ parent = $(this);'並跳過下面的'if ... else ...'! – 2014-09-05 15:34:26