Ich habe ein HTML-Raster mit variabler Anzahl von Zeilen, die einen Datumsauswahl in der ersten Spalte & eine HTML-Schaltfläche in der dritten Spalte hat.Zugriff auf Elementattribute nach dem Übergeben der Referenz jQuery
Ich brauche die Referenz der Schaltfläche & übergeben Sie es in Funktionen (möglicherweise mehr als einmal), um seinen Klick oder Zugriff auf sein Attribut an verschiedenen Orten aufrufen.
var myButton = $(this).parents('tr').find('input[type=button]'); // accesing the button in a function
weiter ich vorbei diese Variable in einem Objekt zu einer anderen JS-Funktion doSomething
doSomething.call(this, { 'btnRef': myButton[0] }, condition);
Innerhalb der doSmething Funktion, die ich in einem globalen JS Objekt diese Referenz speicherte
unsavedObj['btnRef'] = arguments[0]['btnRef']; // I also tried jQuery(arguments[0]['btnRef'])
Problem tritt auf, nachdem ich versuche, über das globale Objekt
auf ein Attribut zuzugreifenIch kann auf Attribute usw. innerhalb der Funktion korrekt zugreifen, wo var myButton den Wert auch erhält jQuery(arguments[0]['btnRef'].attr('rel'))
gibt das richtige Ergebnis zurück. Ist dies das Problem aufgrund des Kontexts ?.
Beispielcode:
//this is the datepicker handler which fires on select of a date.
onSelect: function(d,i) {
var condition = false;
var myButton = $(this).closest('tr').find('input[type=button]');
var btnRel = myButton.attr('rel');
//some other vars
myButton.prop("disabled", false); //this works fine
if(jQuery(myButton).hasClass('xyz')){
if(changedFor !=''){
if(changedFor == btnRel){
condition = (changedFor == btnRel);
}
}
doSomething.call(this,{'btnRef':myButton},condition);//passing to the function doSomething
}
}
//doSomething function.
function doSomething(){
var thisObj = jQuery(this)
if(arguments[1]){
unsavedObj['btnRef'].triggerHandler('click',{'check':arguments[1]});
}else{
BootstrapDialog.show({ //this is a bootstrap dialogbox
title:'',
message:function(dialog){
var $content = "Are you sure?";
return '<div>' + $content + '</div>';
},
closable: false,
buttons: [{
label:'Change',
cssClass: 'btn',
action: function(dialogItself){
unsavedObj['btnRef'] = arguments[0]['btnRef'];
unsavedObj['context'] = thisObj;
changedFor = unsavedObj['btnRef'].attr('rel'); //does not work
unsavedObj['btnRef'].click(); //does not work
dialogItself.close();
}
},{
label:'Cancel',
cssClass:'btn',
action: function(dialogItself){
dialogItself.close();
}
}]
});
}
}
Im sorry für die schlechte Formatierung.
Danke.
Warum mischen Sie reines Javascript und jQuery? Einmal haben Sie begonnen, jQuery zu verwenden, um Kopfschmerzen loszuwerden. – vaso123
Können Sie bitte den vollständigen ** Beispielcode ** angeben? – Justinas
Löst das das Problem: '$ (unsavedObj ['btnRef']) .attr ('rel ')' Ich glaube, dass wenn Sie 'myButton [0]' verwenden, ist es nicht mehr ein jQuery-Objekt, so dass Sie nicht können Verwenden Sie später '.attr '. Sie müssen es in ein jQuery-Objekt zurückkonvertieren. Aber was du machst, könnte meiner Meinung nach viel vereinfacht werden, wenn du mehr Code postest. –