Ich habe das folgende Plugin erstellt, um meine Frage zu illustrieren. http://jsbin.com/vorahohaliWie man Parameter an ein jQuery-Plugin weiterleitet, das mit den ausgewählten Elementen in Beziehung steht
Wie kann ich auf die ausgewählten id
Elemente innerhalb des Plugins zugreifen?
Während ich die ausgewählte <a>
mit this
innerhalb des Plugins sicher zugreifen können, muss das Plugin der Lage sein, allgemein umgesetzt werden jeden Wert von id
verwenden und alle Werte in param
sollte außerhalb des Plugin definiert werden. Beispielsweise steht id
möglicherweise nicht mit dem ausgewählten Element wie $('#MyID').val()
in Verbindung, oder es kann etwas mit dem Element zu tun haben, aber nicht immer auf die gleiche Weise wie $(this).data('id')
oder $(this).parent().data('id')
.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Testing</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
(function($){
var defaults = {param: {},};
var methods = {
init : function (options) {
var settings = $.extend({}, defaults, options);
return this.each(function() {
$(this).click(function(e) {
//How do I pass and receive settings.param.id
console.log(settings.param,settings.param.myInput,settings.param.id,settings.param.id());
});
});
},
};
$.fn.bla = function(method) {
if (methods[method]) {return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));}
else if (typeof method === 'object' || ! method) {return methods.init.apply(this, arguments);}
else {$.error('Method ' + method + ' does not exist on jQuery.bla');}
};
}(jQuery)
);
$(function(){
$("a").bla({param:{id:function(){$(this).data('id')},myInput:$('#myInput').val()},});
});
</script>
</head>
<body>
<a href="javascript:void(0)" data-id="How do I get this value?">click</a>
<input id="myInput" type="hidden" value="My Input Value" />
</body>
</html>
Huh? Die Anker, auf denen das Plugin läuft, wären 'this' innerhalb des Plugins, und es ist sogar in jQuery vorgepackt. – adeneo
Verwenden Sie 'dies' innerhalb der Funktion – DinoMyte
@adeneo Sowieso von außerhalb des Plugins zu tun? 'id' muss nicht an das Element gebunden sein und wird außerhalb des Plugins definiert. – user1032531