哪个策略在这个jQuery插件中更有意义?

Phi*_*ton 5 javascript jquery jquery-plugins

我正在制作一个jQuery插件,在页面上显示警报.插件本身将警报标记插入DOM.由于jQuery的方式是让一切都返回this以维持链接,我遇到了一个有趣的问题,我想要反馈.我试图在以下两个选项之间做出决定.

方案一:

$("#content").alert('prepend', {type:'error', message:'This is an error'})
Run Code Online (Sandbox Code Playgroud)

这看起来很简单.警报前置于#contentDOM元素的开头.问题是,目前还不清楚返回的是什么.返回刚刚创建的alert元素是有意义的,但这种方式违背了jQuery的方式.

方案二:

$("<div>").alert({type:'error', message:'This is an error'}).prependTo("#content")
Run Code Online (Sandbox Code Playgroud)

这种方式似乎不太清晰,不太直观,但它更符合jQuery的处理方式,并且很清楚将返回哪个元素.

那么您会选择哪些选项?我担心的是,大多数用户可能不知道您可以$('<div>')创建新元素.另一方面,我不知道任何众所周知的项目,其jQuery插件方法返回的元素不是它们被调用的元素,但也许有.思考?

Jos*_*ber 1

我只是把它放在 jQuery 命名空间中(而不是放在它的原型上):

$.alert({type:'error', message:'This is an error'}).prependTo("#content");
Run Code Online (Sandbox Code Playgroud)

此外,您可能会考虑请求选择器/DOM 节点/jQuery 对象,而不是让用户自己添加它:

$.alert({
    parent: '#content', // or $('#content') or document.getElementById('content')
    type: 'error',
    message: 'This is an error'
});
Run Code Online (Sandbox Code Playgroud)