检索onclick源后,无法使用元素的方法

时间:2015-05-06 11:27:46

标签: javascript jquery jquery-plugins

这是" myPlugin.js":

的内容
(function ($) {
    $.fn.MyPlugin = function (options) {
    // retrieve somespan
    somespan.html("<a href="#" onclick="javascript: SelectLink(this);"></a>");
})(jQuery);

function SelectLink(element) {
    console.log(element);
    if (element.parent("span").parent("li.clickable")) {
        alert("is clickable");
    } else {
        alert("is not clickable");
    }
}

当我点击div中创建的链接元素时,控制台会给我:

TypeError: element.parent is not a function
<a onclick="javascript: SelectLink(this);" href="#">

所以它知道我们离开的元素,但我不能再做任何事情了吗?为什么会这样?

1 个答案:

答案 0 :(得分:2)

这里的元素是一个dom元素引用,而不是一个jQuery对象,因此其中没有名为parent()的方法。

您可以获取元素的jQuery包装器并在包装器上调用方法

function SelectLink(element) {
    console.log(element);
    var $element = $(element);
    if ($element.parent("span").parent("li.clickable")) {
        alert("is clickable");
    } else {
        alert("is not clickable");
    }
}

由于您正在处理插件,而不是使用内联事件处理程序,所以使用jQuery事件处理程序,如

(function ($) {
    $.fn.MyPlugin = function (options) {

        var $a = $('<a href="#"></a>');
        somespan.html($a);
        $a.click(SelectLink)
    }

    function SelectLink(event) {
        var $this = $(this);
        //if ($this.closest("li.clickable").length) {
        if ($this.parent("span").parent("li.clickable").length) {
            alert("is clickable");
        } else {
            alert("is not clickable");
        }
    }

})(jQuery);