1

我有这个例子”

<div class="tmpl">
    <a href="javascript:button()" class="qwe">Button</a>
</div>

function button(){
    $(this).attr('class');
}

看起来我无法访问attr或其他任何东西,$(this)或者this似乎不在 jQuery 范围内。

任何想法如何使用on("click", function...)方法来完成这项工作?

编辑:html片段是动态添加的,所以可能有live问题??

4

4 回答 4

1

你为什么不使用

<div class="tmpl">
    <a href="#" onclick="button(event)" class="qwe">Button</a>
</div>

function button(event){
    event = event || window.event;
    alert($(event.target).attr('class'));
}

演示:小提琴

于 2013-03-14T08:16:06.793 回答
1

传入参数:

 <div class="tmpl"> 
   <a href='#' onclick="button(this)" class="qwe">Button</a>
   <a href='#' onclick="button(this)" class="qqq">Button2</a>
   <a href='#' onclick="button(this)" class="666">Button3</a>
</div>       //^^^^^^^^^^^^^^^^^^^^^----use onclick event instead

然后:

function button(elem) {
   alert($(elem).attr('class'));
}

检查更新的小提琴

于 2013-03-14T08:20:03.040 回答
1

您的问题是thisinsidebutton指的是window,而不是点击的元素。

属性中的脚本href就像普通函数一样在全局范围内执行。您将无法从那里访问单击的元素。

如果您想通过属性(无论出于何种原因)绑定事件处理程序并访问该元素,则必须使用适当的内联事件处理程序:

<a href="#" onclick="button.call(this)" class="qwe">Button</a>

演示

于 2013-03-14T08:23:17.840 回答
0

qwe 不是属性而是类名,试试$(elem).attr('class')

按照其他人的说明进行更新 ,您还需要更改 onclick:
<a href="javascript:button(this)" class="qwe">Button</a>

于 2013-03-14T08:18:10.527 回答