我正在创建自己的简单jquery
插件
但我现在处于起步阶段,我只专注于帮助我调试自定义插件的事情。
此时我正在触发一个事件监听器,该元素是<a>
该插件仅用于识别另一个元素,没什么特别的。
的index.html
<a href="javascript:void(0);" class="funclass" id="funhref">Click Me</a>
<br />
<table id="randomElement">
<tr>
<td>Testing table cell</td>
</tr>
</table>
<script language="javascript" type="text/javascript">
$(document).ready(function(){
$("a#funhref").on('click', function (event) {
$("#randomElement").identifyElement();
});
});
</script>
identifyElement.js
(function ($) {
$.fn.extend({
identifyElement: function(options) {
// goal 1: (identify the type of element)
console.log( $.type($(this)) ); // returns "object"
// goal 2: (what's the element that fired off the 'click' method?
}
})//eof extend()
})(jQuery);
据我所知。
对于所有你的核心调试器,你可以看到我正在努力了解我正在使用的元素。 (完全有助于未来的项目)
目标1:
在这种情况下,我很想知道#randomElement
是一个html表。如果它是其他东西,那么显然我想打印到console
它是什么,或者它是否被识别。
- 你可以看到console.log( $.type($(this)) );
返回“对象”,但我希望它返回“table”
目标2:
我点击href
来触发事件并触发插件来实现它的魔力。我也喜欢在控制台上打印信息。 (我不知道什么时候我可能需要知道什么会产生一个事件)
同样,我没有构建一个jquery插件来做任何事情,除了练习调试和识别我正在使用的元素。
任何人都可以帮我完成我未完成的2个目标吗?
答案 0 :(得分:0)
您可以使用.is()方法查找特定标记。
如果传递jquery在click()回调中提供的事件对象,则event.target将是触发事件的元素。
答案 1 :(得分:0)
目标1:
this[0].tagName
将返回“TABLE”。
目标2:我认为您不能在插件中获得A
元素。如果需要,您需要要求调用者将this
或事件对象作为参数传递。
答案 2 :(得分:0)
这是目标1和2的工作小提琴。我暂时删除了你的选项参数,替换为事件参数
$("a#funhref").on('click', function (event) {
$("#randomElement").identifyElement(event);
});
(function ($) {
$.fn.extend({
identifyElement: function(event) {
// goal 1: (identify the type of element)
console.log( this[0].tagName );
// goal 2: what's the element that fired off the 'click' method?
console.log( event.target );
}
})//eof extend()
})(jQuery);
更新:
这是使用您的选项参数的版本:
$("a#funhref").on('click', function (event) {
$("#randomElement").identifyElement({event : event});
});
(function ($) {
$.fn.extend({
identifyElement: function(options) {
// goal 1: (identify the type of element)
console.log( this[0].tagName ); // returns "object"
// goal 2: (what's the element that fired off the 'click' method?
console.log( options.event.target );
}
})//eof extend()
})(jQuery);